Лучший способ связать MDB с JMS-адресатом - PullRequest
0 голосов
/ 28 марта 2012

У меня есть сообщение, управляемое компонентом

@MessageDriven(ejbName = "TestMDB", 
    destinationJndiName="test.QueueIn", destinationType = "javax.jms.Queue")
public class TestMDB extends GenericMessageDrivenBean implements
    MessageDrivenBean, MessageListener {
    .....
}

Я бы хотел заменить прямую ссылку назначения "test.QueueIn" на нотацию "java: comp / env / jms / TestQueueIn". Это должно позволить мне указать назначение MDB в дескрипторе развертывания, а не в коде Java. То есть я хочу определить назначение MDB во время развертывания, а не во время компиляции.

Возможно ли это? Или есть ли лучший способ создания ссылочной косвенности?

1 Ответ

1 голос
/ 29 марта 2012

Я нашел способ, как это сделать, хотя я не знаю, является ли он идеальным.

@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 {
    .....
}

jndiName в @ResourceEnvRef является необязательным атрибутом, поэтому вам не нужно его указыватьв коде.Тем не менее, даже если вы это сделаете, оно служит просто значением по умолчанию, вы всегда можете изменить его в (сгенерированном) дескрипторе развертывания.

...