私は4つの異なるプロジェクトを持っており、Weblogicを使用してプロジェクトを展開しています。すべてのプロジェクトに共通のライブラリ(jarファイル)がいくつかあります。現在私のプロジェクトはそれぞれのlibというディレクトリを持ち、ほぼ同じライブラリセットを持っています。さて、このlibディレクトリをWARファイルの外に置いてアクセスすることは可能ですか?複数のJava Webプロジェクトに共通ライブラリを使用する方法
答えて
jarファイルをコンテナの「共有」フォルダに置くことの誘惑に抵抗します。 jarファイルを現在の場所に保つ方がよいでしょう。共有フォルダを使用することをお勧めしますが、将来は共有ライブラリが必要なアプリケーションを配備する必要がありますが、別のバージョンを配備する必要があります。
私はWebLogicに関する経験がありません。 Tomcatには、配備されたすべてのアプリケーションに共通のライブラリを持つ共有フォルダがあります。これを使うのは良い考えではありません。 WebLogicがアプリケーションのセットごとに共有フォルダを使用するように設定できる(すべてのデプロイされたアプリケーションではない)場合は、それを実行できます。
まず、あなたのライブラリをすべて同じ場所に置き、ビルドプロセスで必要なものをインポートすることができます。
新しいWebLogic 10には、共有ライブラリを配置できる各ドメインにlibフォルダがあります。私はそれが前に可能だと思うWeblogic 10
バージョン9には共有ライブラリのサポートがあります:http://e-docs.bea.com/wls/docs92/programming/libraries.html – McDowell
私は現在別のアプローチを使用しています。
- 中央のリポジトリフォルダを作成し、すべての共通ライブラリをそこに配置します。
- 各プロジェクトでは、必要なすべてのライブラリへの参照を作成できます。 Subversionでは、それはあなたがちょうど中央のフォルダにコミットする必要があるので、ローカルの作業コピーは、外観がに更新され、更新され、それが自動的にすべてのプロジェクトに配布しています、externals
毎回で動作します。
これを行いますか?あなたが展開スペースに詰まっていない限り、私は(おそらく)それに反対するでしょう。
なぜですか?現時点では、これらのライブラリを実行する4つのソリューションがあります。 libのいずれかをアップグレードする必要がある場合(たとえば、バグを発見した場合、または新しい機能が必要な場合)、4つのソリューションすべてに対して互換性と機能性をテストする必要があります。それぞれのソリューションに独自のライブラリセットがある場合、それらはサンドボックス化されており、ステップで4つすべてを移動する必要はありません。
このすべては、ソリューションの回帰テストの容易性に関するヒンジです。あなたは同じlibsのセットを使用して実行するのが簡単な場合があります。
しないでください。
WARファイルのアイデアはすべて自己完結型のユニットであるということです。これにより、展開がずっと簡単になります。
他の人が指摘している可能性のあるバージョンの競合に加えて、jarファイルを/ sharedに入れると、クラスの可視性に非常にネストされた結果が生じる可能性があります。それらは別のクラスローダ上にあり、WARファイル内のクラスを見ることができません。 Class.forName()に依存するライブラリを使用すると(それには十分ですが)、これは非常に厄介なものになります。
OSGiまたはSpring DMで余分なディスクスペースとメモリを使用する余裕が本当にない場合は、彼らはこの問題を解決しましたが、複雑さが増します。
すべての共有jarファイルをweblogicのcommon \ libフォルダに置きます。 common \ libには、配備されたすべてのアプリケーションからアクセスできます。
自分のearファイルにjarファイルを入れ、共有ライブラリとして展開できます。
また、戦争を耳に入れ、共有JARをAPP-INF/libに追加することもできます。これはJ2EEのWeblogic拡張版なので、他のサーバーでは動作しません。
- 1. 複数のJavaプロジェクトで共通のライブラリを設定する
- 2. 複数のプロジェクトにまたがる共通ライブラリのgit構造
- 3. 複数のプロジェクト間で共通のパッケージを使用するベストプラクティス
- 4. 共通のライブラリを持つ複数のプロジェクト
- 5. 複数のプロジェクト間で共通のファイルを共有する方法
- 6. 共通のメソッドを複数のオブジェクトに適用する方法
- 7. Java共通メソッド/関数(重複コード用)
- 8. 複数のIntelliJプロジェクトで共通のソースコードを使用するには?
- 9. のGradle:複数のJavaプロジェクトのための共通リソース依存
- 10. 複数のプロジェクトに共通のソースフォルダを使用し、絶対パスを避ける
- 11. ZedGraphライブラリを使用して共通のX軸を持つ複数のグラフを表示する方法は?
- 12. 複数の.NETプロジェクトで共通DLLのバージョン管理を管理する方法
- 13. 共有ライブラリを使用するC/C++プロジェクトをサンドボックスにする方法
- 14. Javaを使用して複数のフィールドと共にファイルをPOSTする方法
- 15. javaバネでActiveMqを使用して複数のプロジェクトの共通ブローカーを作成する
- 16. 複数のプロジェクトにまたがるEntity Frameworkライブラリの共有
- 17. iOSプロジェクトでJavaライブラリを使用する
- 18. 複数のプロジェクトで共通のファイルを共有するためのpythonic方法は何ですか?
- 19. Java WebプロジェクトでSSLを使用する方法
- 20. Eclipse Java動的Webプロジェクトで.propertiesファイルを使用する方法
- 21. C#Web APIプロジェクトの共有方法
- 22. TFSと共有DLLで共通ライブラリを扱う方法
- 23. スプリングブート:複数のRestControllersの共通パスを設定する方法
- 24. JavaとAndroidの両方に共通のライブラリ
- 25. 複数のEmberプロジェクト間でコンポーネントを共有する方法
- 26. Java動的WebプロジェクトとAngularjsを使用してプロジェクトをテストする方法
- 27. MVC 4共通ログインを使用する複数のアプリケーション
- 28. ストーリーボードのビューコンポーネントを共通に使用する方法は?
- 29. 複数のJavaサービスを同じGCPプロジェクトにデプロイする方法
- 30. 同じタイプの複数データテーブルに共通ヘッダカラムを使用
良いアドバイス! jarファイルの余分なコピーを作成する際のオーバーヘッドはほとんどありませんが、同じ場所から2つのバージョンの共通ライブラリを切り取ったり、すべてのアプリケーションを同時に新しいバージョンにアップグレードしたりする必要があります。 –
実際にプロジェクトをコンパイルした後、プロジェクトサイズは約1.5 mb(libsなし)、20 mb(libs) –
です。開発マシンで共有フォルダを使用すると、より迅速に展開できます。プロダクション環境では、これはあまり重要ではないので、すべてのjarファイルが入った大きなWARファイルを好む。そうする場合は、テストを2回行う必要があります(小さなWARと大きなWARの両方)。 – kgiannakakis