アプリケーションの依存関係Jarがある場合は、warファイルのlibディレクトリに配置するか、グローバルアプリケーションサーバー(Tomcatなど)のlibディレクトリに配置する方がよいでしょうか。あるアプローチを別のアプローチよりも使用することで何が得られますか?
ディスクスペースが頭に浮かびますが、私たちはディスクスペースが安い時代に生きています。メモリ使用量に違いはありますか?私よりも経験豊富な人が両方のオプションの長所と短所をリストできますか?
アプリケーションの依存関係Jarがある場合は、warファイルのlibディレクトリに配置するか、グローバルアプリケーションサーバー(Tomcatなど)のlibディレクトリに配置する方がよいでしょうか。あるアプローチを別のアプローチよりも使用することで何が得られますか?
ディスクスペースが頭に浮かびますが、私たちはディスクスペースが安い時代に生きています。メモリ使用量に違いはありますか?私よりも経験豊富な人が両方のオプションの長所と短所をリストできますか?
一般的に言えば、コンテナー構成に依存する必要がないように、WARを自己完結型にする方がはるかに優れています。また、展開がはるかに簡単になります。したがって、可能であれば、ライブラリをWARに配置してみてください。
ただし、ライブラリをコンテナにインストールすることが理にかなっている場合に遭遇しました。例えば、
すべてのウェブアプリで使用される内部ライブラリがいくつかあり、それらは巨大です。それらをコンテナにインストールして、すべてのWebアプリが同じバージョンを使用し、メモリとディスクスペースも節約できるようにします。
WEB-INF/libにインストールされているライブラリはコンテナで使用できません。これらをcontext.xmlで参照する必要がある場合(Resourcesで定義されているJDBCドライバーなど)、server/libに配置する必要があります。
すべてのWebアプリケーションから同じファイルにlog4jログを送信する場合は、log4jjarをserver/libに配置する必要があります。それ以外の場合、各Webアプリは独自のロガーを使用します。
Catalina によって実装されるクラス ローダー階層の詳細な説明については、Tomcat のClass Loaders HOW-TOを確認してください。これにより、コンテナー、すべての Web アプリケーション、単一の Web アプリケーションのみで jar を使用できるようにするタイミングと、jar を配置する場所を理解するのに役立ちます。
コンテナーのリソース管理機能 (SQL データベースに接続し、JNDI ルックアップと接続プールを提供するなど) を使用する場合は、コンテナー ソフトウェア自体がリソースを管理するためにライブラリとドライバーにアクセスする必要があります。
それ以外の場合は、それらをサーバーの /lib ディレクトリにインストールして、それらがそこにあり、動作すると仮定したくないでしょう。Web アプリケーションによってバージョン要件が微妙に異なる可能性があるからです。