欢迎使用普元产品知识库,本知识库包含普元应用开发平台EOSPlatform,流程平台BPS,企业服务总线ESB,微服务平台Microservice,运维管理平台Devops,数据集成平台DI
欢迎使用普元文档库
普元 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里就没有再报错了