【问题标题】:Jersey REST Web Service with Tomcat, Eclipse and 404's - Need another set of eyes please带有 Tomcat、Eclipse 和 404 的 Jersey REST Web 服务 - 请需要另一双眼睛
【发布时间】:2015-03-14 16:28:28
【问题描述】:

这应该很简单,但它让我大吃一惊……我已经阅读了这里的数百个问题,到目前为止,没有一个回答对我的尝试产生任何影响。显然是时候换一双眼睛了..

我在尝试进行最简单的休息测试时遇到 404 错误。

我的 Tomcat 7.0 服务器启动得很好。没有错误。

我在 Eclipse 中的项目名称是:atomic_services_poc

Tomcat 中的 Context 设置为:/atomic_services_poc 我可以成功返回静态页面:http://localhost:8080/atomic_services_poc/index.html

这是我的 web.xml:

<servlet>
    <servlet-name>workflowmanagerserlvet</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.tp.wfm.webservice</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>workflowmanagerserlvet</servlet-name>
    <url-pattern>/workflowmanager/*</url-pattern>
</servlet-mapping>

这是 WorkFlowManagerRestService.java 的 java 代码

package com.tp.wfm.webservice;

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

@Path("/workflow")
public class WorkFlowManagerRestService {

    @GET
    @Produces(MediaType.TEXT_XML)
    public String sayXMLHello()
    {
        return "Data Return";
    }
}

我正在使用 SoapUI 来测试 restful 请求的 GET 方法。我尝试了以下多种变体,它们都导致 404 错误。

获取主机:8080/atomic_services_poc/workflowmanager/workflow

在我扔掉这台笔记本电脑之前请帮忙...

【问题讨论】:

  • 您是否请求了您的方法生成的媒体类型?
  • 是的,我确实验证了媒体类型...

标签: eclipse rest tomcat jersey-2.0


【解决方案1】:

从您显示的内容来看,我认为您的设置没有任何问题。您没有提及您使用的是哪个 Jersey 版本,但我猜它大于 2。(我相信 Jersey

我会建议以下尝试调试:

(1) 暂时删除

@Produces(MediaType.TEXT_XML)

按照@braunpet 的建议,使用您的网络浏览器进行测试

(2) 添加一个 ResourceConfig 类,以便您至少可以调试服务器在启动时所做的事情。这很简单,你定义一个这样的类:

package com.tp.wfm.application;

import org.glassfish.jersey.server.ResourceConfig;


public class MyApplication extends ResourceConfig {

    public MyApplication() {
        super();

        packages("com.tp.wfm.webservice");
    }

}

并像这样更改您的 web.xml:

    <init-param>
        <param-name>javax.ws.rs.Application</param-name>
        <param-value>com.tp.wfm.application.MyApplication</param-value>
    </init-param>

然后您在 Eclipse 中添加一个断点以确保您的资源正在加载。

希望对你有帮助!

【讨论】:

    【解决方案2】:

    好的,所以今天早上我回到了基础。我根据 vogella 教程在笔记本电脑上使用 eclipse 创建了一个全新的工作区。我让这个在我的笔记本电脑上工作了 10 分钟。然后我去了我的问题工作区,一步一步地添加了相同的项目。成功了……

    然后我开始添加我的组件,并慢慢地一个一个地添加它们,我能够让它们工作。我一定是有某种拼写错误或有什么错误,但我觉得这里也没有人能看到它。

    好消息它现在正在运行。 (即使在我删除了 vogella 的东西之后)..

    :)

    感谢所有帮助!

    【讨论】:

      【解决方案3】:

      我也有同样的问题。我一直在寻找大约 2 周的解决方案。在通过了 20 次教程之后,为什么我的 tomcat 仍然显示 404 响应让我发疯了。我只是想让一个 helloworld-example 工作,但是每次我尝试打开 ResourcePATH(例如@Path(“/hello”))时,服务器都会显示 404。我的 Web.xml 是为 jersey 2.x “设置”的,并且 url 参数被声明为“/rest/*”。 localhost:PORT/PROJECT/rest/hello.. 正确调用了 URL,但没有机会。

      最后,我为自己找到了一个解决方案,可以帮助遇到此问题的其他人(比如这个问题的作者):

      • 为您的项目创建一个 .WAR 文件并将其放入“apache_tomcat/webapps”目录 (Eclipse:右键项目->导出->为.WAR文件)
      • 重启 Tomcat 服务器
      • 在重启的服务器上运行应用程序

      之后,它对我有用,我能够连接到我实现的任何 @Path("")。如果我想实现一个新的@Path,我必须重新处理这 3 个步骤。希望这会有所帮助!

      【讨论】:

        猜你喜欢
        • 2013-07-16
        • 1970-01-01
        • 2018-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多