複数の Java Web プロジェクトに共通のライブラリを使用する方法

StackOverflow https://stackoverflow.com/questions/1062781

  •  21-08-2019
  •  | 
  •  

質問

4 つの異なるプロジェクトがあり、Weblogic を使用してプロジェクトをデプロイしています。すべてのプロジェクトに共通するライブラリ (jar ファイル) がいくつかあります。現在、私の各プロジェクトは ライブラリ ディレクトリにあり、ほぼ同じライブラリのセットがあります。さて、この lib ディレクトリを WAR ファイルの外に置いてアクセスすることは可能でしょうか。

役に立ちましたか?

解決

jar ファイルをコンテナーの「共有」フォルダーに置きたいという誘惑に負けないでください。jar ファイルは現在の場所に保存しておくことをお勧めします。今は共有フォルダーを使用するのが良いように思えますが、将来的には、別のバージョンの共有ライブラリを必要とするアプリケーションをデプロイする必要が生じる可能性があります。

そうは言っても、私には WebLogic の経験がありません。Tomcat には、デプロイされたすべてのアプリケーションに共通のライブラリを含む共有フォルダーがあります。これを使用するのは得策ではありません。アプリケーションのセットごとに (デプロイされたすべてのアプリケーションではなく) 共有フォルダを使用するように WebLogic を構成できる場合は、それを使用してもよいでしょう。

他のヒント

これをやりたいですか?展開スペースに困っているのでなければ、(おそらく)やめたほうがいいと思います。

なぜ ?現時点では、これらのライブラリから 4 つのソリューションを実行しています。いずれかのライブラリをアップグレードする必要がある場合 (たとえば、バグを発見した場合、または新しい機能が必要な場合)、4 つのソリューションすべての互換性と機能をテストする必要があります。各ソリューションに独自のライブラリ セットがある場合、それらはサンドボックス化されているため、4 つすべてを順番に移動する必要はありません。

これらすべては、ソリューションの回帰テストがいかに簡単かによって決まることに注意してください。簡単だと思われるかもしれませんが、その場合は同じライブラリのセットを使用することが可能です。

そんなことはしないでください。

WAR ファイルの全体的な考え方は、それらが自己完結型のユニットであるということです。これにより、展開が非常に簡単になります。

他の人が指摘したバージョン競合の可能性に加えて、jar ファイルを /shared に置くと、クラスの可視性に対して非常にネストされた結果が生じる可能性があります。これらは別のクラスローダー上にあるため、WAR ファイル内のクラスを参照できません。Class.forName() に依存して動作するライブラリを使用している場合 (多数存在します)、これは非常に面倒なことになる可能性があります。

本当に本当に追加のディスク容量とメモリを確保できない場合は、OSGi または Spring DM を検討してください。彼らはこの問題を解決しましたが、その代償として複雑さが増しました。

すべての共有 jar ファイルを weblogic の common\lib フォルダーに置きます。common\lib には、デプロイされたすべてのアプリからアクセスできます。

まず第一に、すべてのライブラリを同じ場所に配置し、ビルド プロセスで必要なものをインポートすることができます。

新しい Weblogic 10 のデプロイには、各ドメインに共有ライブラリを配置できる lib フォルダがあります。Weblogic 10 より前ではそれは不可能だと思います

jar を独自の ear ファイルに配置し、共有ライブラリとしてデプロイできます。

war を Ear に入れて、共有 jar を APP-INF/lib に追加することもできます。これは J2EE の Weblogic 拡張機能であるため、他のサーバーでは動作しません。

現在、別のアプローチを使用しています。

  1. 中央リポジトリ フォルダーを作成し、そこにすべての共通ライブラリを置きます。
  2. 各プロジェクトで、必要なすべてのライブラリへの参照を作成できます。Subversion では次のように動作します。 外観

ローカルの作業コピーが更新されるたびに、外部ファイルも更新されるため、中央フォルダーにコミットするだけで、すべてのプロジェクトに自動的に配布されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top