使用Tomcat,Eclipse和404的Jersey REST Web服务 - 需要另一组眼睛

时间:2015-03-14 16:28:29

标签: eclipse rest tomcat jersey-2.0

这应该是如此简单,但它让我大吃一惊......我已经阅读了数百个问题,到目前为止,没有一个回复对我所尝试的内容产生了影响。显然是另一双眼睛的时间..

我在尝试进行最简单的休息测试时遇到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

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

3 个答案:

答案 0 :(得分:0)

我从你所展示的内容中看不出任何错误。你没有提到你正在使用哪个泽西岛版本,但我想大于2.(我相信泽西岛&lt; 2,web.xml中属性的名称不同)。

我建议以下方法尝试调试:

(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中添加断点以确保您的资源正在加载。

我希望它有所帮助!

答案 1 :(得分:0)

好的,所以今天早上我回到基础。我在vogella教程的笔记本电脑上用eclipse创建了一个全新的工作区。我在10分钟内完成了这台笔记本电脑的工作。然后我去了我的问题工作区并逐步添加了相同的项目。它起作用了......

然后我开始逐个添加我的组件,然后慢慢地逐个添加,我能够让它们正常工作。我一定有某种类型的拼写或错误的东西,但我感觉更好,这里没有人能看到它。

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

:)

感谢所有帮助!

答案 2 :(得分:0)

我有同样的问题。我正在寻找一个约2周的解决方案。在通过了20个教程后,它让我疯狂,为什么我的tomcat仍然显示404响应。我只是希望得到一个helloworld-example工作,但每次我尝试打开ResourcePATH时服务器都显示404(例如@Path(&#34; / hello&#34;))。我的Web.xml是&#34;已设置&#34;对于泽西2.x和url param被声明为&#34; / rest / *&#34;。 localhost:PORT/PROJECT/rest/hello已正确调用该网址,但没有机会。

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

  • 创建项目的.WAR文件并将其放入&#34; apache_tomcat / webapps&#34;目录 (Eclipse:右键单击Project-&gt; Export-&gt; as .WAR文件)
  • 重新启动Tomcat-Server
  • 在重新启动的服务器上运行应用程序

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