9

我正在按照教程使用 Jersey 创建一个 REST 服务。

有时我无法完全理解教程作者的意思,但这些是我到目前为止所遵循的步骤:

1) 创建了一个动态网络项目并命名它de.vogella.jersey.first

2) 在eclipse上安装Maven依赖

3) 将我的项目转换为 Maven 项目(这意味着创建了一个 pom.xml 文件)

4) 添加了必要的依赖项,pom.xml这样我就可以使用球衣,而无需手动添加 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 服务类。此属性必须指向您的资源类。"

8)最后一步是 在我的浏览器中打开 URL 。http://localhost:8080/de.vogella.jersey.first/rest/hello但是我得到HTTP Status 404 - /de.vogella.jersey.first/rest/hello


我应该用什么替换com.sun.jersey.config.property.package

我到目前为止所遵循的步骤是正确的,还是我误解了某些东西?

4

2 回答 2

13

有关如果您使用 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>
于 2014-07-26T13:09:33.843 回答
12

com.sun.jersey.config.property.package只需将该属性设置为包含 Web 服务类的包。在教程中它是de.vogella.jersey.first,并且您可以看到Hello该类是在该包下声明的。

换句话说,当你部署应用程序时,Jersey 会在 package 中查找 web 服务类de.vogella.jersey.first,在这种情况下,它会找到Hello带有javax.ws.rs.Path注解的类,并创建一个 web 服务端点监听已声明的 URL与@Path.

然而,我从来没有为我的泽西项目设置过这样的东西。我只是将我的 Web 服务类放在src文件夹中,无论我将它们放在哪个包中,Jersey 都能识别它们。这是我在 Jersey 项目中的最低配置web.xml

<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>

此外,如果您不喜欢 Maven 项目,只需创建一个简单的动态 Web 项目并将Jersey JAR复制到WebContent/WEB-INF/lib.

此外,正如Qwerky建议的那样,web.xml必须在WebContent/WEB-INF/并且.jar文件应该复制到WebContent/WEB-INF/lib.

除此之外,所描述的过程看起来不错!

于 2013-04-26T08:50:28.293 回答