JMS und Spring Framework
Eine Spring-Framework-Anwendung kann die Klasse "JMSTemplate" verwenden, um JMS-Nachrichten zu senden oder um synchrone JMS-Nachrichten zu empfangen.
Die Klasse "JMSTemplate" kann JMS-Ziele über ihren JNDI-Namen (Java™ Naming and Directory Interface) suchen, den Sie in einer Anwendungsressourcenreferenz konfigurieren.
Für Spring Framework Version 2.5 und höher kann die Klasse "JMSTemplate" JMS-Ziele alternativ durch dynamische Auflösung ermitteln. Hierbei wird der Verwaltungsname des Ziels, der in WebSphere Application Server konfiguriert ist, gesucht.
<bean id="jmsConnectionFactory"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jms/myCF"/>
<property name="lookupOnStartup" value="false"/>
<property name="cache" value="true"/>
<property name="proxyInterface" value="javax.jms.ConnectionFactory"/>
</bean>
<resource-ref>
<res-ref-name>jms/myCF</res-ref-name>
<res-type>javax.jms.ConnectionFactory</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
<jee:jndi-lookup id="jmsConnectionFactory" jndi-name=" jms/myCF "/>
<bean id="jmsQueueTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory">
<ref bean="jmsConnectionFactory"/>
</property>
<property name="destinationResolver">
<ref bean="jmsDestResolver"/>
</property>
...
</bean>
<!-- A dynamic resolver -->
<bean id="jmsDestResolver"
class=" org.springframework.jms.support.destination.DynamicDestinationResolver"/>
<!-- Ein JNDI-Auflöser -->
<bean id="jmsDestResolver"
class=" org.springframework.jms.support.destination.JndiDestinationResolver"/>
Zur Laufzeit kann das JMSTemplate-Objekt ein Ziel auf der Basis des JNDI-Namens suchen, der in einer Anwendungsressourcenreferenz konfiguriert wurde. Alternativ kann das JMSTemplate-Objekt ein Ziel durch dynamische Auflösung auf der Basis des Verwaltungsnamens des Ziels suchen, der in WebSphere Application Server konfiguriert ist.
jmsTemplate.send("java:comp/env/jms/myQueue", messageCreator);
jmsTemplate.send("myQueue", messageCreator);