如何在WebSphere8.5上运行JAX-RS应用程序
因此,我正在尝试让一个JAX-RS应用程序在我的WebSphere8.5实例上运行。我创建了以下界面如何在WebSphere8.5上运行JAX-RS应用程序,websphere,jax-rs,war,ear,Websphere,Jax Rs,War,Ear,因此,我正在尝试让一个JAX-RS应用程序在我的WebSphere8.5实例上运行。我创建了以下界面 @Path("service") public class RestService { @GET @Produces("text/plain") public int getCount(){ return 1; } } 这是我的申请表 public class RESTConfig extends Application{ @Overr
@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;
}
}
public类RESTConfig扩展应用程序{
@凌驾
public Set>classes=new Hashset();
添加(RestService.class);
返回类;
}
}
然后这是我的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>
RESTservlet
com.ibm.websphere.jaxrs.server.IBMRestServlet
jaxrs.ws.rs.Application
com.company.rest.RESTConfig
1.
....
RESTservlet
/休息/*
然后,我将WAR配置为一个模块。但当我开始做每件事并尝试http://localhost:[端口]/war/rest/app/service我明白了
[TIME]00000115 RequestProces I org.apache.wink.server.internal.RequestProcessor logException在调用处理程序链期间发生以下错误:在处理发送到的GET请求时,WebApplicationException(404-未找到)出现消息“null”http://localhost:[端口]/战争/休息/服务
请帮忙 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;
}
}
@Path(“应用程序”)
公共类RESTConfig扩展了应用程序{
@凌驾
public Set>classes=new Hashset();
添加(RestService.class);
返回类;
}
}
该问题似乎与仅支持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.
}
现在应该部署好了
这是我的源代码WAS8.5支持v2.4和v3 servlet。删除web.xml内容(并使用3.0代码)对您有效的原因是您在web.xml的param name标记中出错。当您使用正确的参数名时,v2.4servlet在WAS8.5中工作良好 这是不正确的
<param-name>jaxrs.ws.rs.Application</param-name>
jaxrs.ws.rs.Application
这是正确的:
<param-name>javax.ws.rs.Application</param-name>
javax.ws.rs.Application
详情:
此外,您可以尝试更改下面的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>
javax.ws.rs.core.Application
1.
javax.ws.rs.core.Application
/休息/*
此外,在Project Facets中,将Web模块版本更改为3.0
有关更多参考信息,请访问:很抱歉,原来的帖子应该是模糊的,没有。无论如何,我还没有在最后尝试getCount。我想它会使用路径中的路径,不是吗?我会再试一次。另一方面,我会发布一个关于我在wink上遇到的问题的更新。是的,没有骰子。。。给我。。。[Time]000000 A1 RequestProces I org.apache.wink.server.internal.RequestProcessor logException在调用处理程序链期间发生以下错误:处理发送到[url]的GET请求时,WebApplicationException(404-未找到)出现消息“null”我已经看完了,信不信由你,我认为这与8.5不支持低于Servlet 3.0的任何东西有关。这意味着我必须使用ApplicationPath注释。我会确认,然后回答。看起来它不支持只有3.0,但与它有特殊的集成,两者都应该工作。第一个例子展示了如何用老方法来做。不过,如果你不打算支持老年人的话,还是用新的方式做比较好。事实上,我根本无法用旧的方式工作。我不确定这是不是我用朱诺和8.5之类的黑客方式。但特别是在8.5版本,只有新的方式起作用。很高兴听到这个消息,我可能会在很短的时间内遇到这个问题