我有一个消息驱动Bean
@MessageDriven(ejbName = "TestMDB",
destinationJndiName="test.QueueIn", destinationType = "javax.jms.Queue")
public class TestMDB extends GenericMessageDrivenBean implements
MessageDrivenBean, MessageListener {
.....
}
我想用“java:comp / env / jms / TestQueueIn”表示法替换直接目标引用“test.QueueIn”。这应该允许我在部署描述符中而不是在java代码中指定MDB目标。也就是说,我想在部署时确定MDB目标,而不是在编译时确定。
这可能吗?或者,有没有更好的方法来创建引用间接?
答案 0 :(得分:1)
我找到了一种方法,但我不知道它是否理想。
@ResourceEnvRef(name="jms/RequestQueue", type="javax.jms.Queue", jndiName="test.QueueIn"),
@MessageDriven(ejbName = "TestMDB", destinationJndiName="java:comp/env/jms/RequestQueue", destinationType = "javax.jms.Queue")
public class TestMDB extends GenericMessageDrivenBean implements
MessageDrivenBean, MessageListener {
.....
}
@ResourceEnvRef中的jndiName是一个可选属性,因此您无需在代码中指定它。但是,即使您这样做,它仅用作默认值,您始终可以在(生成的)部署描述符中更改它。