jarをビルドパス内に配置し、他の人がweb-inf / libフォルダー内に配置するチュートリアルやアプリケーションをたくさん見てきましたが、大きな違いはありますか?両方の長所と短所は何ですか?特定のjarをlibsフォルダー内に配置し、そのjarをビルドパスに配置するためのインジケーターは何ですか?
2 に答える
WEB-INFフォルダーを持つアプリケーションはWebアプリケーションです。つまり、WARファイルとしてパックされ、サーバーにデプロイされます。
EclipseのようなIDEを使用していて、プロジェクトをWARファイルとしてエクスポートすると、libフォルダーの下にあるjarが自動的に取得され、WARとともにパックされ、サーバーで実行されているアプリケーションで使用できるようになります( WEB-INF / libはアプリケーションのクラスパスに含まれています)。
それらを他の場所に配置してビルドパスに含める場合は、プロジェクトをエクスポートするときに、ビルドパスのjarも含めることを宣言する必要があります。
基本的に大きな違いはありませんが、実行時にこのjarが必要であることがわかっている場合(つまり、アプリケーションをサーバーにデプロイした後)、WEB-INF/libフォルダーに配置することをお勧めします。
ビルドパスとはどういう意味ですか?使用するJARのほとんどは、コードがJARに依存しているため、ビルド(コンパイル)中に使用可能である必要があります。そうでない場合、JARはコンパイルされません。
本当の問題は、JARをWEB-INF/lib
コンテナ/lib
ディレクトリに配置するか、コンテナディレクトリに配置するかです。一般に、JARは常にアプリケーション内に配置する必要がありますWEB-INF/lib
。それらをグローバルに配置すると、いくつかの結果が生じます。
複数がデプロイされている場合、シングルトンはすべてのWebアプリケーション(1つのクラスローダー)に対してグローバルになります
ライブラリがクラスのいずれかへの参照を保持している場合は、メモリリークを導入する方が簡単です(上記を参照)
同じクラスを複製しないでください(各クラスローダーに個別のコピーがあるのではなく、各Webアプリケーションは同じクラスを再利用します