2016-06-26 13 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 apache tomcatサーバーの内部サーバーエラー

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. 

のUbuntu 16.04 Serverのx64の とApache Tomcatの/ 8.0.36

+0

クラスパスに異なるバージョンのJerseyの2つのjarファイルなど、同じAPIの重複したリソース(jarファイル)がありますか? – Yazan

+0

@ヤザンどうすれば確認できますか? –

+0

あなたのクラスパスを確認してください。ウェブアプリケーションの場合は、主にwebapp内の 'WEB-INF/lib'、またはtomcatの' lib'フォルダの場合は、 'jersey1.0.jar'や' jersey2 .0.jar'(例えば) – Yazan

答えて

0

これは、JREのバージョンがサーバー上で異なることになります。

1

Apache Tomcatのスタックトレースですべてのことがわかります。アプリケーションのクラスパスに複数のJAX-RS jarがあることは間違いありません。いくつかのJarからjavax.ws.rs.core.Applicationクラスがロードされているように見えますが、Java.util.Mapを返すgetProperties()メソッドはありません。重複したjarの存在を厳密にチェックする必要があります。手動で見つけることができない場合、JHadeのようなツールを使用して重複したjarの存在を検出できます。しかし、アプリケーションクラスのパスにJAX-RS jarの場合、必要なgetProperties()メソッドがjavax.ws.rs.core.Applicationクラスにあるかどうかを慎重に調べてください。これらの行でコードをデバッグすると、ソリューションが完成する可能性があります。それがあなたに役立つかどうかを教えてください:)。 PS - JAX RS 1.x jarsにはgetProperties()メソッドはありませんが、JAX-RS 2.xにはあります。

0

JAX-RSバージョンのjar不一致があるようです。 JAX-RSのバージョンを制御するためにmavenを使用してください。 ジャージを使用している場合は、2.23.2以上のバージョンを使用してください。

あなたは私たちは、おそらくservletコンテナは常にservletを探しますので、我々はpublic として私たちが覚えておく必要がある。このことを私たちのservletクラスを宣言していないことをやるされている他のエラーのhttp://185.21.76.71:8080/crmapi/application.wadl

0

つを介して、あなたの成功の展開を確認す​​ることができます公共エリアのクラスですので、servletファイルを公開する必要があります それ以外の場合は エラー500-内部サーバーエラーが発生します。

関連する問題