私のWebサービスアプリケーションでは、ビジネスルールを検証するためにサードパーティのモジュールを統合する必要があります。これらのモジュールはかなり古いライブラリに付属しています。
古いライブラリは私の新しいライブラリと競合しています。
実行中のWebサービス内の分離されたスレッド/クラスローダーでサードパーティモジュールを分離する方法はありますか?
あなたが探しているのはOSGiと呼ばれています。
もちろんですが、次のようにリフレクションを介して使用する必要があります。
ClassLoader classLoader = new URLClassLoader (
new URL [] {/* Classpath or isolated module here */},
ClassLoader.getSystemClassLoader ().getParent ());
Class <?> isolatedModuleClass = classLoader.loadClass (
/* Full name of class from isolated module */);
Object isolatedObject =
isolatedModuleClass.
getConstructor (/* Constructor argument types */).
newInstance (/* Constructor arguments */);
Object result =
isolatedModuleClass.
getMethod (/* Method name */, /* Method parameter types */).
invoke (isolatedObject, /* Method arguments */);