我试图找出如何在CDI中使用构造函数注入,其中一个参数是JNDI查找。
使用正常场注入,我可以执行以下操作:
@Stateless
public class Publisher
{
@Inject
@JMSConnectionFactory("java:/jms/remoteCF")
private JMSContext context;
@Resource(lookup="java:global/remote")
private InitialContext externalContext;
private Topic genericTopic;
@PostConstruct
public void init(){
try {
Object obj = externalContext.lookup(TOPIC);
genericTopic = (javax.jms.Topic) obj;
} catch (NamingException namingException) {
}
}
}
externalContext
例子:
@Inject
public Publisher( @JMSConnectionFactory("java:/jms/remoteCF") JMSContext context, @Resource( "java:global/remote") InitialContext externalContext ){
this.context = context;
this.externalContext = externalContext;
}
但是
@Resource
不是允许作为参数的注释。
外部上下文
参数是通过JNDI查找检索的bean吗?在哪里指定JNDI名称?