高速バイナリ Web サービス (別名 Ejb3.1) として記述された依存関係が多数あります。サービス宣言は次のとおりです。
@Remote
public interface MyService {...}
次の構文を使用して、EJB をサーブレットまたはマネージド Bean に注入します。
@EJB
MyService myService;
@EJB
しかし、私は注射を使いたくありません。プレーンなバニラ CDI を使用したい:
@Inject
MyService myService;
@Produces
これを実現する 1 つの方法は、すべての EJB に対してメソッドを作成することです。
@Produces MyService produceMyService(InjectionPoint ijp){
//jndi lookup for MyService interface
}
ただし、InjectionPoint は、ターゲット クラス名 (この場合は MyService) など、必要なすべての情報を提供できます。
CDI でこのようなことを行う方法はありますか? 必要な注入ポイントを他の方法で満たすことができない場合は、このプロデューサーを最後に呼び出したいと思います。
@Produces Object produce(InjectionPoint ijp){
Class ejbInterface = ijp.getType();
//jndi lookup for ejbInterface
}
これは紛らわしい投稿ですので、明確化のための質問をしてください。ありがとうございます!