Я пытаюсь создать производителя MQ, который отправляет сообщение в очередь ActiveMQ. Дело в том, что я не хочу, чтобы реализация была специфичной для ActiveMQ. На самом деле я выполняю отправку ActiveMQ в среде разработки, а в производстве сервер приложений будет использовать что-то еще. Я планирую использовать Maven для создания 2 профилей, которые будут фильтровать ресурсы на основе данного профиля.
Я начал играть с JNDI, но застрял... Я перепробовал множество вариантов, но ни один из них не работает. На данный момент мой XML-файл конфигурации весны выглядит следующим образом:
<jee:jndi-lookup id="mqConnectionFactory" jndi-name="java:comp/env/jms/mqConnectionFactory" />
<bean id="jmsJndiTemplate" class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</prop>
<prop key="java.naming.provider.url">vm://localhost</prop>
</props>
</property>
</bean>
<bean id="ismeJmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="defaultDestination" ref="ismeJmsDestination"/>
<property name="connectionFactory" ref="mqConnectionFactory"/>
</bean>
<bean id="ismeJmsDestination" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate" ref="jmsJndiTemplate"/>
<property name="jndiName" value="dynamicQueues/FOO.BAR"/>
</bean>
mqConnectionFactory не может быть найден, потому что я не добавил его в JNDI. Я не знаю, как его добавить на самом деле, так как это не веб-приложение, поэтому нет context.xml.
Может ли кто-нибудь помочь мне в правильном направлении?