Jersey實現rest web service
環境:tomcat7,jdk1.7, maven2, Jersey1.3
web.xml 的配置如下,這個是正確的配置。
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <servlet> <servlet-name>jerseyws</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> <init-param> <param-name>com.sun.jersey.config.property.resourceConfigClass</param-name> <param-value>com.sun.jersey.api.core.PackagesResourceConfig</param-value> </init-param> <init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>com.test.restwebservice.rest</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>jerseyws</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping> </web-app>
開始學習Restful,在網上搜了個例子(http://www.cnblogs.com/dcba1112/archive/2011/05/01/2033788.html)來學習。按照上面的web.xml配置,結果一直出現這個錯誤:
com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes.
原來是我的init-paramter 配置錯誤
<init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>com.test.restwebservice.rest</param-value> </init-param>
這個裏的值,我直接copy例子中的code沒有有修改,其實這個應該是個rest class 所在的package,
com.sun.jersey.config.property.packages included a resource that include any jersey services. In above case, "com.mkyong.rest
” contains any jersey services.
其實,可以去掉這個配置,這樣,在啓動服務的時候,tomcat會自動掃描可能存在rest services.