実行時に ejb3 を呼び出したいと思います。ejb の名前とメソッド名は実行時にのみ使用できるため、コンパイル時にリモート インターフェイスを含めることはできません。
String bean = 'some/Bean';
String meth = 'doStuff';
//lookup the bean
Object remoteInterface = (Object) new InitialContext().lookup(bean);
//search the method ..
// foreach (methods)
// if method == meth, method.invoke(bean);
Bean は複数のアプリケーション サーバーに分散する必要があり、すべての Bean はリモートで呼び出される必要があります。
ヒントはありますか?特に私はしたくない:
- 依存性注入
- ディスパッチャにアプリケーション固有の ejb インターフェイスを含める (上記)
- webservices、それは処理能力を無駄に捨てるようなもの、すべての xml がらくた
ネットワーク経由で ejb3 リモート インターフェースをロードすることは可能ですか (そうであれば、どのように?)、インターフェースをハッシュマップなどにキャッシュすることができます。
上記のメイン ディスパッチャーに含めることができるリモート ディスパッチャー Bean を使用したソリューションがありますが、これは本質的に同じことを行いますが、呼び出しをローカル ejb に中継するだけです (どのようにルックアップできますか? ネーミング ルックアップは失敗します)。リモート ディスパッチャ Bean があれば、依存性注入を使用できます。
助けてくれてありがとう
(ネットビーンズとグラスフィッシュところで)