これは非常に初歩的な質問かもしれませんが、これがよく知られており、他の場所で解決されている場合は、私を助けてください.
Tomcat インスタンスにデプロイする必要がある 2 つの WAR として、複数の戦争のセットアップ (すべての Maven モジュール) がkilo-webapp1
あります。kilo-webapp2
これら 2 つの Web アプリケーションは両方とも、共通のサービス jar のサービスを使用しますkilo-common-services.jar
。にはkilo-common-services.jar
、jar viz のユーザーによってロードされる独自のスプリング コンテキストがあります。kilo-webapp1
そしてkilo-webapp2
この場合。キロコモンサービスでのサービスの初期化には長い時間がかかることがあるため、(インスタンスの起動にかかる時間があまり長くないようにするために) 1 回だけ実行したいので、これも役立ちます。 JVMインスタンスで最新の状態に保つ第2レベルのキャッシュとして使用します。これを行うために、次の手順に頼りました。
- tomcat の CATALINA_BASE の catalina.properties を次のように変更します
shared.loader
。${catalina.base}/shared/lib
kilo-common-services.jar
およびそのすべての依存 jar を にコピーしましたCATALINA_BASE/shared/lib
。【手動ステップ】- spring関連のjarをその
CATALINA_BASE/shared/lib
場所にコピーする[手動ステップ] beanRefContext.xml
でファイルを作成しましたkilo-common-services.jar
。ClassPathXmlApplicationContext
ここで、コンストラクターに共通サービスのスプリング コンテキスト ファイルの場所が提供された場所を定義します。- およびpom ファイルのように、
kilo-common-services.jar
およびその他すべての依存関係 (Spring 関連の jar など)の依存範囲に注意してください。Spring の場合、これは、クラスパス スキャン アクションが 2 回トリガーされないようにするために必要です。また、スコープを介して除外されていない場合、これにより異なるs (log4j の場合) が発生します。provided
kilo-webapp1
kilo-webapp2
ClassCastException
provided
kilo-webapp1
およびのweb.xmlkilo-webapp2
は、それらの parentContext が でservicesContext
定義されていることを示していkilo-common-services.jar
ます。
キロコモンサービスのサービスが1つしか存在しないことは確認できましたが、ご想像のとおり設定が面倒です。誰かが Eclipse のような IDE でのこのようなセットアップに関するベスト プラクティスを持っている場合は、本当に感謝しています。私の問題は以下の通りです:
- #2は挑戦になりつつあります。私は現在、依存する jar を から にコピーしようと
mvn dependency:copy-dependencies
し ていますが、 これは非常に手動のステップです。何度も依存関係を再生成するのを忘れて、再デプロイをしなければなりません。kilo-common-services
target/dependency
shared/lib
- #3も簡単ではありません。新しい一般的な依存関係が何度もあり、ClassCastExceptionsを回避するために共有ライブラリにコピーすることを常に忘れないでください。
- #5 もメンテナンスの悪夢です。
また、時間が経つにつれて、共有する必要のある異なる一般的な jar が増え、これらの jar のそれぞれに苦痛が伴います。セットアップを自由に批評し、使いやすい (IDE からも) より良いものを代わりに提案してください。他の詳細を提供していただければ幸いです。
前もって感謝します!