1

私はTomcatの従来のクラスローディングシステムに精通しています。

    Bootstrap
        |
     System
        |
     Common
     /     \
Webapp1   Webapp2 ...

Tomcat 6にデプロイされた既存のWebアプリケーション用のテスターWebアプリケーションを作成しようとしています。理想的には、テストするアプリケーションのコンテキストパスを示すcontext-paramを使用して(サブジェクトと呼びます)、直接ロードします。それ自身の前の主題からのライブラリ。だから私が手に入れたいと思っている木は(心の弱い人のためではなく、あなたは警告されている):

    Bootstrap
        |
     System
        |
     Common
     /     \
Subject   Webapp2 ...
   |
Tester

ライブラリをコピーして同じ効果を得ることができるかもしれませんが、SubjectとTesterの両方がTomcatによってwarファイルからすでに拡張されている必要があることを確認するのは洗練されたソリューションではありません。

私の質問はこれです:Subjectがすでに存在し、Testerとは独立して機能すると仮定すると、webappディレクトリにwarファイルを追加してTomcatを起動するだけでこれを実現できる方法はありますか(理想的にはTomcatの構成を変更せずに、しかし当然のことながらできないかもしれません)?そして、私のフォローアップの質問は、私が知っておくべきこのテクニック(セキュリティまたはその他)の欠点はありますか?

これが実現可能なアイデアであるかどうか、またはフランケンシュタインの怪物を作成しているかどうかを判断しようとしているので、フィードバックに感謝します。

注: Subjectは単なる汎用アプリケーションではなく、当社が実装した特定のアプリケーションであるため、SubjectはTesterから独立して動作する必要がありますが、この取り組みに役立つ場合は、Subjectを変更できないという意味ではありません。 。

4

1 に答える 1

1

あなたはフランケンシュタインの怪物を作っていると思います。カスタムクラスローダーを実装することでこれをアーカイブできますが、これには少なくとも、Tomcatによってサブジェクトが抽出される場所に関する知識が必要です。それに加えて、サブジェクトが再デプロイされるときに問題が発生する可能性があります。どんなテストをしたいですか?たぶん、あなたがやろうとしていることに対して、もっと単純で頑強なアプローチがあるでしょう。

于 2012-11-28T10:28:12.560 に答える