7

jarをビルドパス内に配置し、他の人がweb-inf / libフォルダー内に配置するチュートリアルやアプリケーションをたくさん見てきましたが、大きな違いはありますか?両方の長所と短所は何ですか?特定のjarをlibsフォルダー内に配置し、そのjarをビルドパスに配置するためのインジケーターは何ですか?

4

2 に答える 2

12

WEB-INFフォルダーを持つアプリケーションはWebアプリケーションです。つまり、WARファイルとしてパックされ、サーバーにデプロイされます。

EclipseのようなIDEを使用していて、プロジェクトをWARファイルとしてエクスポートすると、libフォルダーの下にあるjarが自動的に取得され、WARとともにパックされ、サーバーで実行されているアプリケーションで使用できるようになります( WEB-INF / libはアプリケーションのクラスパスに含まれています)。

それらを他の場所に配置してビルドパスに含める場合は、プロジェクトをエクスポートするときに、ビルドパスのjarも含めることを宣言する必要があります。

基本的に大きな違いはありませんが、実行時にこのjarが必要であることがわかっている場合(つまり、アプリケーションをサーバーにデプロイした後)、WEB-INF/libフォルダーに配置することをお勧めします。

于 2012-12-03T08:05:51.353 に答える
1

ビルドパスとはどういう意味ですか?使用するJARのほとんどは、コードがJARに依存しているため、ビルド(コンパイル)中に使用可能である必要があります。そうでない場合、JARはコンパイルされません。

本当の問題は、JARをWEB-INF/libコンテナ/libディレクトリに配置するか、コンテナディレクトリに配置するかです。一般に、JARは常にアプリケーション内に配置する必要がありますWEB-INF/lib。それらをグローバルに配置すると、いくつかの結果が生じます。

  • 複数がデプロイされている場合、シングルトンはすべてのWebアプリケーション(1つのクラスローダー)に対してグローバルになります

  • ライブラリがクラスのいずれかへの参照を保持している場合は、メモリリークを導入する方が簡単です(上記を参照)

  • 同じクラスを複製しないでください(各クラスローダーに個別のコピーがあるのではなく、各Webアプリケーションは同じクラスを再利用します

于 2012-12-03T08:00:49.260 に答える