我正在尝试使用针对Web服务的jersey设置一个简单的Java Web应用程序。但是我有以下问题。 tomcat服务器找不到资源http://localhost:8081/OnlineShop/rest/books/list,但它可以找到我的简单servlet http://localhost:8081/OnlineShop/index
我有以下web.xml
另一方面,我注意到com.sun.jersey.spi.container.servlet.ServletContainer存在于我的项目中,因为我使用maven添加了依赖项,但是jersey.config.server.provider.packages不存在。也许这就是问题,但我不知道我必须添加的确切依赖性。
My BookRest.java具有以下代码,位于com.shop.rest包中。
最后,我的pom.xml具有以下依赖项。
<dependencies>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.19</version>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib-ext-spring</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>1.18</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.19</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.19</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-common</artifactId>
<version>2.17</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<version>2.17</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
答案 0 :(得分:3)
请,请摆脱整个项目。你显然是一个初学者,似乎只是将随机配置和依赖关系放在一起,可能来自不同的教程。您的依赖项不兼容,并且您的web.xml配置错误。就像我说的那样,废弃整个项目并从头开始。如果您刚刚开始,则应使用其中一个启动应用程序。
你在Netbeans,所以请执行以下操作
jersey-quickstart-webapp
org.glassfish.jersey.archetypes
您将添加的唯一依赖项是
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<!-- use the following artifactId if you don't need servlet 2.x compatibility -->
<!-- artifactId>jersey-container-servlet</artifactId -->
</dependency>
web.xml看起来像
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.stackoverflow.jersey</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
这将为您启动并运行一个简单的应用程序。您将看到需要取消注释JSON支持的依赖项。取消评论。或者更好的是,取消评论,然后将jersey-media-moxy
更改为jersey-media-json-jackson
。杰克逊是IMO更好的JSON库。
同时保留Jersey Documentation便于阅读和使用泽西的参考资料