我正在关注this教程,使用Jersey创建一个REst服务。
有时我无法完全理解教程的作者的意思,但这些是我到目前为止所遵循的步骤:
1) 创建了一个动态网络项目并将其命名为: de.vogella.jersey.first
2) 在eclipse上安装了Maven依赖项
3) 将我的项目转换为Maven项目(这意味着创建了一个pom.xml文件)
4) 在pom.xml
中添加了必要的依赖项,以便我可以使用jersey而无需手动添加jar文件。我添加了以下xml:
<dependencies>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.17.1</version>
</dependency>
</dependencies>
5) 作者建议创建一个java类并提供一些代码。我只能假设他希望我们在src文件夹中创建一个新包,将其命名为de.vogella.jersey.first
,然后创建一个java类并将其命名为Hello
并将代码放在那里。那是我做的。
6) 然后他建议打开web.xml
文件。虽然在项目中不是这样的文件。所以我继续在WebContent/WEB-INF/lib
路径中创建这样一个文件。我放置了他建议的代码。
7) 接下来是我最不理解的一步。他谈到了我们刚刚添加的web.xml
,更具体地说他说:
“参数”com.sun.jersey.config.property.package“定义了jersey将在哪个包中查找Web服务类。此属性必须指向您的资源类。” < / p>
8) 最后一步是在浏览器中打开网址http://localhost:8080/de.vogella.jersey.first/rest/hello
。但是我得到了HTTP Status 404 - /de.vogella.jersey.first/rest/hello
我应该完全取代com.sun.jersey.config.property.package
?
我现在所遵循的步骤是正确的,还是我误解了什么?
答案 0 :(得分:11)
只需将属性com.sun.jersey.config.property.package
设置为包含Web服务类的包。在教程中它是de.vogella.jersey.first
,您可以看到Hello
类是在该包下声明的。
换句话说,当您部署应用程序时,Jersey将在包de.vogella.jersey.first
中查找Web服务类,在这种情况下,它将查找使用{{1}声明的类Hello
注释,并创建一个侦听已使用javax.ws.rs.Path
声明的URL的Web服务端点。
但是,我从来没有为我的泽西项目设置过这样的东西。我只是将我的Web服务类放在@Path
文件夹中,无论我把它放在哪个包中,Jersey都会识别它们。这是我在src
中对泽西项目的最低配置:
web.xml
此外,如果您不喜欢Maven项目,只需创建一个简单的动态Web项目并将Jersey JARs复制到<servlet>
<description>JAX-RS Tools Generated - Do not modify</description>
<servlet-name>JAX-RS Servlet</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<!--
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.your.webservice.classes</param-value>
</init-param>
-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JAX-RS Servlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
。
此外,正如Qwerky建议的那样,WebContent/WEB-INF/lib
必须在web.xml
中,并且WebContent/WEB-INF/
文件应该复制到.jar
。
除此之外,描述的程序看起来很好!
答案 1 :(得分:10)
如果您使用的是Jersey 2,则此类已被jersey.config.server.provider.packages
替换,因此您的资源配置如下:
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>de.vogella.jersey.todo.resources</param-value>
</init-param>