0

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

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

4

1 回答 1

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

于 2012-03-29T11:20:28.400 回答