У меня есть приложение Spring, которое должно искать место назначения JMS, чтобы выполнить свою работу.В зависимости от того, находимся ли мы в среде разработки или тестирования системы, мы будем использовать разные реализации JMS.(Oracle AQ в системном тесте с WebLogic, Apache ActiveMQ развернут в Jetty for Dev)
Я настроил ActiveMQ и развернул его, и он создает свои места назначения в файле activemq.xml:
<destinations>
<queue physicalName="handlersDest" />
<topic physicalName="notificationsDest" />
</destinations>
Когда я запускаю приложение-обработчик (Spring), оно выполняет поиск мест назначения:
<jee:jndi-lookup id="handlersDest" jndi-name="$handlersDest">
<jee:environment>
java.naming.factory.initial = ${jndi.jms.naming.factory.initial}
java.naming.provider.url = ${jndi.jms.naming.url}
queue.handlersDest = handlersDest
</jee:environment>
</jee:jndi-lookup>
Моя проблема заключается в том, что мне нужно добавить следующую строку в среду, чтобы она работала:
queue.handlersDest = handlersDest
Я знаю, что это говорит начальному контексту ActiveMQ, что существует пункт назначения, называемый "handlersDest", и что он должен убедиться, что он зарегистрирован под именем очереди "handlersDest", но я не знаю, зачем мне это нужнов клиентском приложении?
Не могу ли я заранее определить эти имена JNDI в activemq.xml или где-нибудь еще в моем приложении, которое развертывает activemq?