我有一堆写成快速二进制 Web 服务(又名 Ejb3.1)的依赖项。这是服务声明:
@Remote
public interface MyService {...}
您可以使用以下语法将 EJB 注入 servlet 或托管 bean:
@EJB
MyService myService;
但是我不想使用@EJB
注射。我想使用普通的香草 CDI:
@Inject
MyService myService;
实现此目的的一种@Produces
方法是为每个 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
}
这是一个令人困惑的帖子,所以请提出澄清问题。万分感谢!