所以我想让一个JAX-RS应用程序在我的WebSphere 8.5实例上运行。我创建了以下界面......
@Path("service")
public class RestService {
@GET
@Produces("text/plain")
public int getCount(){
return 1;
}
}
这是我的申请......
public class RESTConfig extends Application{
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> classes = new Hashset<?>();
classes.add(RestService.class);
return classes;
}
}
然后这是我的web.xml ...
<servlet>
<servlet-name>Rest Servlet</servlet-name>
<servlet-class>com.ibm.websphere.jaxrs.server.IBMRestServlet</servlet-class>
<init-param>
<param-name>jaxrs.ws.rs.Application</param-name>
<param-value>com.company.rest.RESTConfig</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
....
<servlet-mapping>
<servlet-name>Rest Servlet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
然后我将EAR配置为WAR作为模块。但当我开始一切并尝试去http:// localhost:[port] / war / rest / app / service时,我看到..
[TIME] 00000115 RequestProces I org.apache.wink.server.internal.RequestProcessor logException在调用处理程序链期间发生以下错误:WebApplicationException(404 - Not Found),在处理GET请求时发送消息“null”到http:// localhost:[port] / war / rest / service
请帮助!
答案 0 :(得分:3)
WAS8.5支持v2.4和v3 servlet。删除web.xml内容(以及使用3.0代码)的原因是因为你在web.xml的param-name标签中有错误。当您使用正确的param-name时,v2.4 servlet在WAS8.5中正常工作。
这是不正确的。
<param-name>jaxrs.ws.rs.Application</param-name>
这是正确的:
<param-name>javax.ws.rs.Application</param-name>
答案 1 :(得分:1)
RestConfig
类(定义为JAX-RS应用程序)应覆盖getClasses
以返回资源:
@Path("app")
public class RESTConfig extends Application{
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> classes = new Hashset<?>();
classes.add(RestService.class);
return classes;
}
}
答案 2 :(得分:1)
该问题似乎与仅支持v3 servlet的8.5有关。这似乎解决了这个问题......
@Path("service")
public class RestService {
@GET
@Produces("text/plain")
public String getCount(){
//Text-Plain cannot be int apparently
return String.valueOf(1);
}
}
@ApplicationPath("rest")
public class RESTConfig extends Application{
//Override no longer needed.
}
现在应该部署好......
这是我的来源IBM
答案 3 :(得分:0)
此外,您可以尝试购买更改以下web.xml文件
<servlet>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
此外,在项目构面中 - 将Web模块版本更改为3.0