我没有编译错误,我的应用程序在我的测试服务器上正常启动。但是,我在尝试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发生了。对我做错了什么想法?
答案 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