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.

Sie verwenden ein Spring-Objekt "JndiObjectFactoryBean" als Proxy für ein ConnectionFactory-Objekt, um sicherzustellen, dass JMS-Ressourcen ordnungsgemäß verwaltet werden können. Beispiel:
<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>
Das folgende Beispiel zeigt die Konfiguration einer Ressourcenreferenz für ein ConnectionFactory-Objekt. Während der Anwendungsimplementierung wird diese Ressourcenreferenz einer konfigurierten, verwalteten Verbindungsfactory zugeordnet, die im JNDI-Namespace des Anwendungsservers gespeichert ist. Das ConnectionFactory-Objekt ist erforderlich, um das Messaging durchzuführen, und es sollte durch Injektion in das Spring-JMSTemplate-Objekt integriert werden.
<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>
Sobald ein definierter JNDI-Name für das ConnectionFactory-Objekt in der Anwendung vorhanden ist, kann dieser JNDI-Name gesucht und durch Injektion in das JMSTemplate-Objekt integriert werden. Beispiel:
<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.

Das folgende Beispiel zeigt, wie JNDI-Auflösung verwendet wird, um die JMS-Warteschlange "myQueue" zu suchen, die an die JNDI-Referenz "jms/myQueue" gebunden ist:
jmsTemplate.send("java:comp/env/jms/myQueue", messageCreator);
Das folgende Beispiel zeigt, wie dynamische Auflösung verwendet wird, um die JMS-Warteschlange "myQueue" zu suchen, die an die JNDI-Referenz "jms/myQueue" gebunden ist:
jmsTemplate.send("myQueue", messageCreator);

Symbol, das den Typ des Artikels anzeigt. Konzeptartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cspr_data_access_jms
Dateiname:cspr_data_access_jms.html