3

我正在尝试运行我的第一个 HelloWorld Jersey 项目,阅读了一堆关于它的教程,我认为理论上它应该可以工作,但我当然做错了,页面给了我 404 错误。这是我所拥有的:

我从 Eclise 中的 DynamicWebProject 开始,并使用插件将其转换为 Maven 项目。并将这些添加到 POM 文件中:

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-core</artifactId>
    <version>1.8</version>
</dependency>
<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-server</artifactId>
    <version>1.8</version>
</dependency>
<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-json</artifactId>
    <version>1.8</version>
</dependency>
<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-client</artifactId>
    <version>1.8</version>
</dependency>
</dependencies>

然后我还添加了一个像这样的非常小的类来添加一些 Jersey 注释:

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

@Path("/hello")
public class HelloWorldResource {

    @GET
    @Produces("application/plain")
    public String getMessage() {
        // Forward request to service layer.
        return "Hello World";
    }
}

我还在 web.XML 文件中用这些注册了 Jersey:

  <servlet>
    <servlet-name>Jersey REST Service</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>JerseyREST</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Jersey REST Service</servlet-name>
    <url-pattern>/rest/*</url-pattern>
  </servlet-mapping>

注意:那里已经创建了一些,我还没有碰过它们。他们还在那里。

因此,使用此配置,我做了一个在服务器上运行并转到

http://localhost:8080/JerseyREST/rest/hello

但得到一个讨厌的 HTTP 状态 404 - /JerseyREST/jerseyrest/rest/hello 错误。而且我无法弄清楚我做错了什么。我有什么建议或地方吗?

非常感激。

4

2 回答 2

1

我按照这个链接实现了我的第一个 Jersey Web 服务:Java 中的 REST 我在 Tomcat v7.0 上运行它,它运行良好。你在Tomcat上试过了吗?如果没有,我建议你尝试一下。有时发生在我身上,我永久收到 404 错误。为了修复错误,我删除了 Tomcat 并创建了一个新的服务器向导,然后它就可以正常工作了。

正如@Tom 所说,它可能与"application/plain". 改为使用MediaType.TEXT_PLAIN

您需要在 /WEB-INF/lib/ 下添加这些 jar 文件: asm-3.1, jackson-core-asl-1.9.2, jackson-jaxrs-1.9.2, jackson-mapper-asl-1.9.2, jackson-xc-1.9.2, jersey-client-1.11, jersey-core-1.11, jersey-json-1.11, jersey-server-1.11, jersey-servlet-1.11,jettison-1.1jsr311-api-1.1.1.

于 2012-07-26T15:58:15.190 回答
0
 <param-name>com.sun.jersey.config.property.packages</param-name>
  <param-value>JerseyREST</param-value>

参数值应指向您创建类的文件夹。

于 2015-07-17T18:36:28.290 回答