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.