在Websphere Application Server 7上运行简单的JAX-RS应用程序时出现null错误

时间:2014-01-02 16:37:32

标签: java jax-rs websphere-7

我没有编译错误,我的应用程序在我的测试服务器上正常启动。但是,我在尝试GET请求时遇到错误:

[1/2/14 10:23:13:248 EST] 00000022 RequestProces I org.apache.wink.server.internal.RequestProcessor logException The following error occurred during the invocation of the handlers chain: WebApplicationException (404 - Not Found) with message 'null' while processing GET request sent to http://localhost:9081/IDMWorkflowServices/resources/workflow

这是我的web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name>IDMWorkflowServices</display-name>
<servlet>
    <description>
    JAX-RS Tools Generated - Do not modify</description>
    <servlet-name>JAX-RS Servlet</servlet-name>
    <servlet-class>com.ibm.websphere.jaxrs.server.IBMRestServlet</servlet-class>
    <init-param>
        <param-name>javax.ws.rs.core.Application</param-name>
        <param-value>com.psg.itim.workflow.WorkflowResourceApplication</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>JAX-RS Servlet</servlet-name>
    <url-pattern>
    /resources/*</url-pattern>
</servlet-mapping>
</web-app>

这是WorkflowResource:

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

// The Java class will be hosted at the URI path "/workflow"
@Path("/workflow")
public class WorkflowResource {
    @GET
    @Produces("text/plain")
    public String getClichedMessage() {
        // Return some cliched textual content
        return "Hello World";
    }
}

这是WorflowResourceApplication:

import javax.ws.rs.core.Application;
import java.util.HashSet;
import java.util.Set;

public class WorkflowResourceApplication extends Application{
    @Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> classes = new HashSet<Class<?>>();
        classes.add(WorkflowResource.class);
        return classes;
    }
}

如果不是很明显,这是我第一次尝试使用JAX-RS。我不完全确定我从上面的代码中做了什么或不需要什么来让它工作。看起来很简单,但是当我去这个网址时

http://localhost:9081/IDMWorkflowServices/resources/workflow
404发生了。对我做错了什么想法?

2 个答案:

答案 0 :(得分:2)

解决!唯一错误的是这一行:

<param-name>javax.ws.rs.core.Application</param-name>

我把它改为:

<param-name>javax.ws.rs.Application</param-name>

我认为它应该与我从WorflowResourceApplication.java调用的类相同,但事实并非如此。现在一切都很好。显然,应用程序将类错误识别为客户端问题,并注册了404。

答案 1 :(得分:0)

调试此问题的第一步是查看您是否拥有正确的端口。这样做 - 尝试访问 - http:// localhost:9081。如果有默认的index.jsp,请查看是否进入默认页面或空白页面或hello页面。如果你得到404那么这意味着你的serever正在运行,但你的端口号不正确。

如果您不确定您的端口设置是什么(如果我是正确的,则默认端口应为9080),请遵循此文档 - http://pic.dhe.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=%2Fcom.ibm.websphere.migration.nd.doc%2Finfo%2Fae%2Fae%2Frmig_portnumber.html