8

Tomcat 環境で構成の問題を追跡しようとしています。私たちの実稼働サーバーは tomcat インストールを実行しており、共有 NFS マウントから war を読み取っています。

ただし、スタンドアロン ボックス (構成を含む) で同じ戦争を試みると、以下に投稿されたエラーが表示されます。

興味深いのは、WEB-INF/lib 内のすべての jar ファイルを WEB-INF/classes に解凍すると、このエラーがなくなることです。

そのため、何かがアプリが WEB-INF/lib パスをロードするのを妨げているようですが、アプリと構成を検出しているため、これを引き起こす tomcat 設定を見つけることはできません。含まれている瓶。

何か案は?

SEVERE: クラス org.springframework.web.context.ContextLoaderListener java.lang.ClassNotFoundException のアプリケーション リスナーの構成エラー: org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387 での org.springframework.web.context.ContextLoaderListener ) org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3786) で org.apache.catalina.core.StandardContext で org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233) で。 start(StandardContext.java:4342) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771) at org.apache .catalina.core.StandardHost.addChild(StandardHost.java:525) 組織で。org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:627) org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553) org.apache.catalina.startup.HostConfig.deployApps(HostConfig. java:488) org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149) で org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311) で org.apache.catalina.util .LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) で org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) org.apache.catalina.core.StandardService.start(StandardService.java:516) で org.apache.catalina.core.StandardServer.start(StandardServer.java:710) で org.apache.catalina.startup.Catalina .start(Catalina.java:578) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ) で java.lang.reflect.Method.invoke(Method.java:597) で org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) で org.apache.catalina.startup.Bootstrap.main( Bootstrap.java:413) 2011 年 12 月 20 日午後 4:20:38 org.apache.catalina.core.StandardContext リスナー開始 SEVERE:クラス org.springframework.security.web.session.HttpSessionEventPublisher java.lang.ClassNotFoundException のアプリケーション リスナーの構成エラー: org.springframework.security.web.session.HttpSessionEventPublisher で org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java) :1387) org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3786) で org.apache.catalina.core.WebappClassLoader.loadClass(WebappClassLoader.java:1233) で。 org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791) の StandardContext.start(StandardContext.java:4342) org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771) の org .apache.catalina.core.StandardHost.addChild(StandardHost.java:525) org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:627) で org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553) で org.apache.catalina.startup.HostConfig .deployApps(HostConfig.java:488) org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149) org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311) org. org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) の apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) org.apache.catalina.core.StandardHost.start(StandardHost. java:719) org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) で org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) org.apache.catalina.core.StandardService.start(StandardService.java:516) で org.apache.catalina.core.StandardServer.start(StandardServer.java:710) で org.apache.catalina.startup .Catalina.start(Catalina.java:578) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java) :25) org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) で java.lang.reflect.Method.invoke(Method.java:597) で org.apache.catalina.startup.Bootstrap で。メイン (Bootstrap.java:413)core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:578) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl. org.apache.catalina.startup.Bootstrap で java.lang.reflect.Method.invoke(Method.java:597) で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) で (NativeMethodAccessorImpl.java:39) を呼び出す.start(Bootstrap.java:288) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:578) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl. org.apache.catalina.startup.Bootstrap で java.lang.reflect.Method.invoke(Method.java:597) で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) で (NativeMethodAccessorImpl.java:39) を呼び出す.start(Bootstrap.java:288) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)org.apache.catalina.startup.Bootstrap で java.lang.reflect.Method.invoke(Method.java:597) で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) で (NativeMethodAccessorImpl.java:39) を呼び出す.start(Bootstrap.java:288) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)org.apache.catalina.startup.Bootstrap で java.lang.reflect.Method.invoke(Method.java:597) で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) で (NativeMethodAccessorImpl.java:39) を呼び出す.start(Bootstrap.java:288) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)

4

2 に答える 2

3

ですから、これがなぜ起こっているのか、まだ理由はわかりませんが、ようやく機能させることができました. 通常、「unzip」を使用して war を deploy ディレクトリに解凍します。「jar」を使用するように切り替えたところ、すべてが魔法のように機能しました。

これがなぜなのか、私にはわかりません。私は他のすべての順列を試しました(展開フォルダー、シンボリックリンク、アクセス許可、所有権などを確認しました)が、これが違いを生んだ唯一のものでした。機能し、1つは機能しませんでした

また、注意してください: 本番環境のデプロイでは、何年もの間「unzip」を使用してきました。私は本当にこれを理解することはできませんが、少なくとも何か他のことに取り組むことができてうれしいです.

于 2011-12-22T20:07:13.443 に答える
2

ClassNotFoundException は、リストされたクラス (あなたの場合は org.springframework.web.context.ContextLoaderListener) が見つからなかったことを常に意味するわけではなく、クラスをロードできなかったことを意味する可能性があります。

その特定のクラスが何らかの理由でロードに失敗した場合、たとえば、見つからない別のクラスを参照する静的ブロックがある場合、クラス ローダーはロードの失敗を「ClassNotFoundException」として報告します。

WEB-INF/lib ディレクトリに、Tomcat のデフォルト ライブラリにも存在するクラス/jar が含まれていないことを確認してください。これにより、複数のバージョンがある場合にロード エラーが発生することがあります。jar ファイルをクラス ディレクトリに解凍すると、パスの順序でクラスが移動する可能性があるため、動作する可能性があります。

于 2011-12-21T15:49:52.393 に答える