2016-06-26 3 views
0

나는 war 파일을 가지고 있고 그것을 첫 번째 서버에 배포했습니다. 모든 것은 괜찮습니다. http://185.126.201.83:10808/crmapi/rest/v1/authentication/hi (방화벽 뒤에 있기 때문에 포트가 다름) 에 테스트 할 수 있지만 내 새 서버에는 오류가 발생하며 두 서버 모두 모두 동일합니다. 뭐가 잘못 되었 니? http://185.21.76.71:8080/crmapi/rest/v1/authentication/hi500 아파치 톰캣 서버의 내부 서버 오류

type Exception report 

message Servlet.init() for servlet com.crmapi.services.ApplicationConfig threw exception 

description The server encountered an internal error that prevented it from fulfilling this request. 

exception 

javax.servlet.ServletException: Servlet.init() for servlet com.crmapi.services.ApplicationConfig threw exception 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528) 
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099) 
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670) 
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) 
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    java.lang.Thread.run(Thread.java:745) 
root cause 

java.lang.NoSuchMethodError: javax.ws.rs.core.Application.getProperties()Ljava/util/Map; 
    org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:309) 
    org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:315) 
    org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:170) 
    org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:358) 
    javax.servlet.GenericServlet.init(GenericServlet.java:158) 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528) 
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099) 
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670) 
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) 
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    java.lang.Thread.run(Thread.java:745) 
note The full stack trace of the root cause is available in the Apache Tomcat/8.0.36 logs. 

우분투 16.04 서버 64 및 아파치 톰캣/8.0.36

+0

동일한 API에 대해 중복 된 리소스 (jar 파일)가 있습니까 (예 : 클래스 경로에 다른 버전이있는 Jersey 용 2 개의 jar 파일)? – Yazan

+0

@ 야잔 어떻게 확인할 수 있습니까? –

+0

클래스 경로를 확인하십시오. 웹 응용 프로그램의 경우 WEB-INF/lib가됩니다. 그렇지 않으면 tomcat의'lib' 폴더에'jersey1.0.jar' 및'jersey2 '와 같은 중복 jar 파일이 없어야합니다 .0.jar' (예) – Yazan

답변

0

IT는 JRE 버전은 서버에 차이가 있음을 보인다 : 당신은 그것을 테스트 할 수 있습니다.

1

아파치 톰캣 스택 트레이스가 알려줍니다. 애플리케이션의 클래스 패스에 여러 개의 JAX-RS 병이 있어야합니다. javax.ws.rs.core.Application 클래스가 일부 Jar에서로드되었지만 Java.util.Map을 리턴하는 getProperties() 메소드가없는 것 같습니다. 중복 된 jar의 존재를 엄격하게 확인해야합니다. 수동으로 찾을 수없는 경우 JHade와 같은 도구를 사용하여 중복 된 jar의 존재를 감지 할 수 있습니다.하지만 애플리케이션 클래스 경로에 JAX-RS가 하나만 있다는 것을 확신 할 수 있다면 jar 파일에 javax.ws.rs.core.Application 클래스에 필요한 getProperties() 메소드가 있는지 여부를 신중하게 검사하십시오. 이 줄에서 코드를 디버깅하면 해결할 수 있습니다. 그게 도움이되는지 알려주세요 :). PS - JAX RS 1.x jars에는 getProperties() 메소드가 없지만 JAX-RS 2.x에는 있습니다.

0

JAX-RS 버전의 jar 불일치가있는 것 같습니다. maven을 사용하여 JAX-RS 버전을 제어하십시오. 저지를 사용하는 경우 2.23.2 이상의 버전을 사용하십시오.

당신은 우리가 아마도 우리가 public 우리가 servlet 컨테이너가 항상 servlet을 찾습니다 때문에 기억해야이 일이 우리의 servlet 클래스를 선언되지 않는 것을 다른 오류의 http://185.21.76.71:8080/crmapi/application.wadl

0

하나를 통해 성공적인 배포를 확인하실 수 있습니다 공개 영역의 수업이므로 우리는 servlet 파일을 공개해야합니다. 그렇지 않으면 오류 500- 내부 서버 오류가 발생합니다.