【问题标题】:Getting a 404 error to run a Jersey REST运行 Jersey REST 时出现 404 错误
【发布时间】:2012-07-26 14:31:57
【问题描述】:

我正在尝试运行我的第一个 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 错误。而且我无法弄清楚我做错了什么。 有什么建议或我看过的地方吗?

非常感谢。

【问题讨论】:

  • 我会先访问您服务器的管理器应用程序(如果有的话)并查看该应用程序是否已真正部署。我的另一个猜测是 @Produces 注释有问题。我从未听说过“应用程序/普通”MIME 类型。
  • 是的,它没有在 Tomcat 管理器中列出 :(
  • 然后检查你的构建输出,你的项目肯定有问题。
  • 对不起,我对 Eclipse 中的 maven 不熟悉。我自己是 Netbeans 用户。回家后我可以在我的 STS 中查看它,除非您的问题到那时已经得到解答。
  • localhost:8080localhost:8080/JerseyREST 是否会满足您的期望? IE。你的应用真的部署了吗?

标签: eclipse maven jersey


【解决方案1】:

我通过这个链接实现了我的第一个 Jersey Web 服务:REST in Java 我在 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, @98765433334@, jettison-1.1, @98765434 p>

【讨论】:

  • 是的,我昨天试图效仿他的例子......但是他说将 Jersey 文件复制到那个 Lib 文件夹,我这样做了,但我的 Jersey 注释仍然没有解决并且无法修复它,所以我说好吧,让我们使用 pom...你是如何解决的?
  • 您需要从 Jersey 主页下载 jar 文件。我将在我的项目中添加jar文件的名称到这个问题的末尾。
  • 这些是我复制到该 Lib 文件夹的三个 JAR 文件:jersey-server-1.12 asm-3.3.1 jersey-core-1.12
  • 他们是对的,但还不够。如果您的问题仍未解决,请告诉我。
  • 我认为您可以在该链接中找到它们。不,我没有使用 Bundle。我使用了与我编写的完全相同的库。
【解决方案2】:
 <param-name>com.sun.jersey.config.property.packages</param-name>
  <param-value>JerseyREST</param-value>

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-02
    • 2015-06-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    • 2017-11-25
    • 2014-04-30
    相关资源
    最近更新 更多