欢迎使用普元产品知识库,本知识库包含普元应用开发平台EOSPlatform,流程平台BPS,企业服务总线ESB,微服务平台Microservice,运维管理平台Devops,数据集成平台DI

页面树结构

欢迎使用普元文档库

Skip to end of metadata
Go to start of metadata

【问题】

普元 EOS Platform 7.6 weblogic12.1.3,通过http://127.0.0.1:7001/default/rest/services/book/sayHello访问用REST暴露的服务报如下异常,在tomcat上能正常访问

java.lang.NoSuchMethodError: javax.ws.rs.ClientErrorException.validate(Ljavax/ws/rs/core/Response;Ljavax/ws/rs/core/Response$Status$Family;)Ljavax/ws/rs/core/Response;
 at javax.ws.rs.ClientErrorException.(ClientErrorException.java:79)
 at javax.ws.rs.NotFoundException.(NotFoundException.java:70)
 at org.jboss.resteasy.core.registry.SegmentNode.match(SegmentNode.java:112)
 at org.jboss.resteasy.core.registry.RootNode.match(RootNode.java:43)
 at org.jboss.resteasy.core.registry.RootClassNode.match(RootClassNode.java:48)
 at org.jboss.resteasy.core.ResourceMethodRegistry.getResourceInvoker(ResourceMethodRegistry.java:444)
 at org.jboss.resteasy.core.SynchronousDispatcher.getInvoker(SynchronousDispatcher.java:234)
 at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:171)
 at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220)
 at com.primeton.components.rest.extend.CustomHttpServletDispatcher.service(CustomHttpServletDispatcher.java:64)
 at com.primeton.components.rest.extend.CustomHttpServletDispatcher.service(CustomHttpServletDispatcher.java:58)

用到的jar包:

【解答】

问题原因:Platform 7.5 后发布的 Rest 组件不符合JSR-311 规范(扩展了方法多复杂参数注解),并且与weblogic中自带的restful模块冲突,目前没有解决方案,强烈不建议使用该组件。

方案建议:可以考虑使用SpringMVC发布restful服务,或者使用标准的JSR规范注解发布restful服务

另,若一定需要使用rest组件,请注意:
1. JavaAPI 发布restful服务:不要使用@JSONParam注解,仅使用JSR-311规范支持的注解如:@Path @GET @POST @PUT … …

2. 逻辑流发布restful 服务:采用符合规范的方式发布restful api , 即设计一个方法或逻辑流时不要包含多个复杂对象参数


附上其他项目里遇到的情况:

weblogic12.1.3 domain里1个server上部署了两个不同platform7.6应用(都使用了restful服务),也遇到过上述异常,将应用分开部署到domain下两个server里就没有再报错了