将MDB与JMS目标联系起来的最佳方法

时间:2012-03-28 18:22:23

标签: java-ee deployment ejb weblogic-10.x mdb2

我有一个消息驱动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目标,而不是在编译时确定。

这可能吗?或者,有没有更好的方法来创建引用间接?

1 个答案:

答案 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是一个可选属性,因此您无需在代码中指定它。但是,即使您这样做,它仅用作默认值,您始终可以在(生成的)部署描述符中更改它。