Tomcat の Web アプリケーションは .war ファイルにラップされ、Tomcat にスローされます。アプリケーションは、war ファイルおよび含まれている jar ファイル内のクラスを使用できます。これにより、Tomcat のランタイム クラスがアプリケーション クラスから分離されます。
ストーム (storm-project.net を参照) を使用する場合、同様の分離はありません。むしろ、推奨される方法では、「ファット jar」を作成する必要があります。これは、必要なクラス ファイルをすべて独自の jar からアンラップした後に含む jar を示します。単純な状況ではこれは機能しますが、結果として得られるファット jar には、すべてのマージされた jar からのすべての META-INF/* ファイルが正しくマージされている必要があり、これは半自動的には機能しません。
戦争ファイルのようなものをシミュレートする独自のクラスローダーを書くことを恥ずかしがりません。ただし、デプロイするすべてのクラスをロードするデフォルトのクラスローダーをインターセプトする方法がわかりません。
私の理論では、アプリケーションのクラスの 1 つがデフォルトのクラス ローダーによって最初にロードされるというものです。おそらくその - セクションでstatic
、すべての依存クラスが自分のクラスローダーによってロードされるように、魔法のクラスローダースペルをキャストします。これにより、適切と思われるものから必要なクラスを取得する方法になります。
説明されている一般的な問題と、必要な特定の魔法に関するヒントをいただければ幸いです。