tomcat8 部署到Linux系统中,webService服务无法使用
来源:互联网 发布:怎么申请淘宝客服兼职 编辑:程序博客网 时间:2024/06/06 12:58
项目在tomcat7中linux环境和Windows环境都没有问题,但是领导要求部署用tomcat8,在本地Windows环境开发和部署,都没有问题,但是部署到服务器中,调用webService总是报错,报错内容如下:
javax.servlet.ServletException: Servlet execution threw an exception
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.ht.filter.AuthFilter.doFilter(AuthFilter.java:38)
org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:152)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
root cause
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;
javax.ws.rs.ClientErrorException.<init>(ClientErrorException.java:200)
org.apache.cxf.jaxrs.utils.SpecExceptions.toHttpException(SpecExceptions.java:117)
org.apache.cxf.jaxrs.utils.ExceptionUtils.toHttpException(ExceptionUtils.java:162)
org.apache.cxf.jaxrs.utils.JAXRSUtils.findTargetMethod(JAXRSUtils.java:528)
org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:177)
org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:77)
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.ht.filter.AuthFilter.doFilter(AuthFilter.java:38)
org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:152)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)
root cause
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;
javax.ws.rs.ClientErrorException.<init>(ClientErrorException.java:200)
org.apache.cxf.jaxrs.utils.SpecExceptions.toHttpException(SpecExceptions.java:117)
org.apache.cxf.jaxrs.utils.ExceptionUtils.toHttpException(ExceptionUtils.java:162)
org.apache.cxf.jaxrs.utils.JAXRSUtils.findTargetMethod(JAXRSUtils.java:528)
org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:177)
org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:77)
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
想着是jar包冲突,但换了好几个jar包都不行,最后反编译jar包javax.ws.rs-api-2.0.1.jar,发现ClientErrorException类的validate方法是继承父类的方法,但是调用的时候无法找到该方法,也不知道是什么原因,最后我把父类的方法移动到了子类里,并把编译后的class文件替换掉,之后启动tomcat8 ,经测试是好的。改好了类如下:
package javax.ws.rs;import javax.ws.rs.core.Response;import javax.ws.rs.core.Response.ResponseBuilder;import javax.ws.rs.core.Response.Status;import javax.ws.rs.core.Response.Status.Family;public class ClientErrorException extends WebApplicationException{ private static final long serialVersionUID = -4101970664444907990L; public ClientErrorException(Response.Status status) { super((Throwable)null, validate(Response.status(status).build(), Response.Status.Family.CLIENT_ERROR)); } public ClientErrorException(String message, Response.Status status) { super(message, null, validate(Response.status(status).build(), Response.Status.Family.CLIENT_ERROR)); } public ClientErrorException(int status) { super((Throwable)null, validate(Response.status(status).build(), Response.Status.Family.CLIENT_ERROR)); } public ClientErrorException(String message, int status) { super(message, null, validate(Response.status(status).build(), Response.Status.Family.CLIENT_ERROR)); } public ClientErrorException(Response response) { super((Throwable)null, validate(response, Response.Status.Family.CLIENT_ERROR)); } public ClientErrorException(String message, Response response) { super(message, null, validate(response, Response.Status.Family.CLIENT_ERROR)); } public ClientErrorException(Response.Status status, Throwable cause) { super(cause, validate(Response.status(status).build(), Response.Status.Family.CLIENT_ERROR)); } public ClientErrorException(String message, Response.Status status, Throwable cause) { super(message, cause, validate(Response.status(status).build(), Response.Status.Family.CLIENT_ERROR)); } public ClientErrorException(int status, Throwable cause) { super(cause, validate(Response.status(status).build(), Response.Status.Family.CLIENT_ERROR)); } public ClientErrorException(String message, int status, Throwable cause) { super(message, cause, validate(Response.status(status).build(), Response.Status.Family.CLIENT_ERROR)); } public ClientErrorException(Response response, Throwable cause) { super(cause, validate(response, Response.Status.Family.CLIENT_ERROR)); } public ClientErrorException(String message, Response response, Throwable cause) { super(message, cause, validate(response, Response.Status.Family.CLIENT_ERROR)); } public static Response validate(Response response, Response.Status expectedStatus) { if (expectedStatus.getStatusCode() != response.getStatus()) { throw new IllegalArgumentException(String.format("Invalid response status code. Expected [%d], was [%d].", new Object[] { Integer.valueOf(expectedStatus.getStatusCode()), Integer.valueOf(response.getStatus()) })); } return response; } public static Response validate(Response response, Response.Status.Family expectedStatusFamily) {// if (response.getStatusInfo().getFamily() != expectedStatusFamily) {// throw new IllegalArgumentException(String.format("Status code of the supplied response [%d] is not from the required status code family \"%s\".", new Object[] { Integer.valueOf(response.getStatus()), expectedStatusFamily }));// } return response; }}
0 0
- tomcat8 部署到Linux系统中,webService服务无法使用
- 使用axis2 部署webservice服务
- linux部署tomcat8.5
- Windows部署Tomcat8启动服务
- tomcat在cmd中部署到系统服务
- # solr6.5部署到 tomcat8
- linux安装redis并使用其提供的初始化启动脚本加入到系统服务中
- linux安装redis并使用其提供的初始化启动脚本加入到系统服务中
- asp.net 前端使用jquery $post 方法调用webservice 部署到IIS时会无法使用的问题
- solr4.8.1部署到tomcat8.0.33
- 将web项目部署到tomcat8
- Maven自动部署war到Tomcat8
- 【tomcat】linux下将tomcat注册到系统服务中
- windows后台服务如何部署到Linux
- Maven学习总结(32)——Maven项目部署到Tomcat8中
- 如何部署web服务到tomcat中
- 在linux部署hornetq为系统服务
- Ubuntu 把Tomcat8 设置成系统服务
- HDMI之EDID使用说明
- 移植OpenWrt到CuHead Pro WiFi
- Android里ListView里面添加CheckBox实现多选。
- selenium结合最新版的sikuli使用
- QT5 动态链接库的创建和使用
- tomcat8 部署到Linux系统中,webService服务无法使用
- ORACLE表空间迁移:ASM->ASM的迁移
- yii2 window 安装流程
- angularJS 表单使用
- .ini配置文件的写法
- 小白书暴力之除法,最大乘积,分数拆分,双基回文数
- [刷题]Maximum Subarray
- sqlserver 存储过程中使用临时表到底会不会导致重编译
- 用plsqldeveloper创建表为字段加注释时出现乱码解决方法