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) 


想着是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
原创粉丝点击