2

Tomcat 7.0.26 を実行している Ubuntu サーバー (12.04) に Web アプリの新しいバージョンをデプロイしようとしています。私が使用する jackson- ライブラリ ( -core-annotations、および) を含めるのではなく、展開する予定の他のアプリケーションで使用できる-databindようにそれらを領域に配置しようとしています。/usr/share/tomcat7/lib

サーバーを起動して、アプリをデプロイできます。ただし、一度実行すると、アプリがクラッシュし、Tomcat がダウンします。明らかに、ObjectMapper は適切にロードされていませんが、databind jar ファイルに存在します (チェックするために jar tvf を実行しました)...

クライアントへの応答は次のとおりです。

HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
java.lang.NullPointerException
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    java.lang.Thread.run(Thread.java:679)

また、アプリの実行後、catalina.out ログ ファイルには次のように表示されます。

Mar 11, 2013 1:42:55 AM org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["http-bio-8080"]
Mar 11, 2013 1:42:55 AM org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service Catalina
Mar 11, 2013 1:42:57 AM org.apache.coyote.AbstractProtocol stop
INFO: Stopping ProtocolHandler ["http-bio-8080"]
Mar 11, 2013 1:42:57 AM org.apache.catalina.loader.WebappClassLoader loadClass
INFO: Illegal access: this web application instance has been stopped already.  Could not load com.fasterxml.jackson.databind.ObjectMapper.  The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
java.lang.IllegalStateException
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1587)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1546)
    at org.comtor.authserv.APIServer.doPost(APIServer.java:150)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:679)
Mar 11, 2013 1:42:57 AM org.apache.coyote.AbstractProtocol destroy
INFO: Destroying ProtocolHandler ["http-bio-8080"]

ここで何か助けていただければ幸いです。何がうまくいかないのか、どうすればそれを防ぐことができるのか、また Web アプリケーションが実行されたときにサーバーがダウン (クラッシュ) するのを防ぐことができるのかを調べようとしています。

ありがとう。

4

1 に答える 1

1

Jersey REST ライブラリにも同様の問題がありました。WAR ファイルに含めた一部の jar と、Tomcat の lib フォルダーに移動した jar との間にバージョンの競合があったため、Tomcat がアプリをクラッシュさせていたことが判明しました。

jar ファイルを移動する方が迅速かつ簡単であるため、最初にローカル開発マシンでこれをトラブルシューティングすることをお勧めします。Tomcat に付属のライブラリーと、必要なすべてのライブラリーが war ファイルにパックされたものから始めます。アプリは正常に動作するはずです。次に、jar ファイルをアプリから Tomcat lib に移動します。アプリを再構築せずにこれを行うことができます。7-zip などの unzip ユーティリティを使用して war ファイルを開き、war ファイルからファイルを削除して Tomcat/lib に移動するだけです。おそらく毎回 Tomcat を再起動する必要がありますが、この方法で機能する構成を取得するのにそれほど時間はかかりませんでした。現在、私の war ファイルは 8MB ではなく 735KB しかありません。アップロード速度が遅いので、これは私にとって重要です。

于 2013-03-11T02:29:46.493 に答える