WSDL-Erweiterungen schreiben, die Ihrem WSIF-Service den Zugriff auf ein JMS-Ziel ermöglichen

Mit Hilfe des nativen JMS-Providers (Java™ Message Service können WSIF-Clients (Web Services Invocation Framework) einen Service, der an einem JMS-Ziel verfügbar ist, als Web-Service behandeln. Verwenden Sie diese Informationen und die zugehörigen Codefragmente, um Ihre WSDL-Erweiterungen zu schreiben.

Vorbereitende Schritte

In diesem Artikel wird davon ausgegangen, dass Sie bei der Installation von WebSphere Application Server einen JMS-Provider ausgewählt und konfiguriert haben (entweder den Standard-Messaging-Provider oder einen anderen Provider wie den WebSphere MQ-Messaging-Provider). Sollten Sie noch keinen JMS-Provider ausgewählt und konfiguriert haben, tun Sie dies jetzt gemäß der Beschreibung im Artikel Messaging-Provider auswählen.

Informationen zu diesem Vorgang

Die WSDL-Erweiterungen für JMS werden mit dem Namespacepräfix jms bezeichnet. Beispiel: <jms:binding>.

Die unterstützten Operationen sind Einwegoperationen (send für Punkt-zu-Punkt-Messaging mit JMS oder publish für Publish/Subscribe Messaging mit JMS) oder Request-Response-Operationen (send und receive für Punkt-zu-Punkt-Messaging mit JMS). Die WSDL-Operationen geben daher entweder nur eine Eingabenachricht bzw. eine Eingabe- und eine Ausgabenachricht an.

Für Operationen, die Nachrichtenschnittstellen mit einer nativen JMS-Bindung beschreiben, gibt es keine Fehlernachrichten. Bezüglich des Nachrichtenschemas oder der Semantik von Nachrichteneigenschaften gelten keine Annahmen, daher kann keine Unterscheidung zwischen Ausgabe- und Fehlernachrichten getroffen werden.

Verwenden Sie diese Vorgehensweise und die zugehörigen Codefragmente, um die WSDL-Erweiterung (Web Services Description Language) zu schreiben, mit der Ihr WSIF-Service auf einen zugrunde liegenden Service an einem JMS-Ziel zugreifen kann.

Vorgehensweise

Beispiel 1: JMS-Textnachricht

Die JMS-Textnachricht enthält java.lang.String. Im folgenden Beispiel enthält die WSDL-Nachricht nur einen Teil, der den gesamten Hauptteil der Nachricht darstellt:

<wsdl:definitions ... > 

   <!-- Einfache oder komplexe Typen für Eingabe- und Ausgabenachrichten -->
   <wsdl:types> ... </wsdl:types>
   
   <wsdl:message name="JmsOperationRequest"> ... </wsdl:message>
   <wsdl:message name="JmsOperationResponse"> ... </wsdl:message>
 
   <wsdl:portType name="JmsPortType">
      <wsdl:operation name="JmsOperation">
         <wsdl:input name="Request" 
                     message="tns:JmsOperationRequest"/>
         <wsdl:output name="Response" 
                      message="tns:JmsOperationResponse"/>
      </wsdl:operation>
   </wsdl:portType>

   <wsdl:binding name="JmsBinding" type="JmsPortType">
      <jms:binding type="TextMessage" />

      <format:typemapping style="Java" encoding="Java">           
         <format:typemap name="xsd:String" formatType="String" />
      </format:typemapping>

      <wsdl:operation name="JmsOperation">
         <wsdl:input message="JmsOperationRequest">
            <jms:input parts="requestMessageBody" />
         </wsdl:input>
         <wsdl:output message="JmsOperationResponse">
            <jms:output parts="responseMessageBody" />
         </wsdl:output>
      </wsdl:operation>
   </wsdl:binding>

   <wsdl:service name="JmsService">
      <wsdl:port name="JmsPort" binding="JmsBinding">
         <jms:address destinationStyle="queue" 
                      jndiConnectionFactoryName="myQCF"
                      jndiDestinationName="myDestination"/>
      </wsdl:port>
   </wsdl:service>

</wsdl:definitions>

Das folgende WSDL-Beispiel ist eine Erweiterung zum vorangegangenen Beispiel der JMS-Nachricht und beschreibt eine Request-Response-Operation, in der spezifische JMS-Eigenschaftswerte der Anforderungs- und der Antwortnachricht für die Anforderungsnachricht gesetzt und von der Antwortnachricht abgerufen werden.

Die JMS-Eigenschaften in der Anforderungsnachricht werden entsprechend den Werten in der Eingabenachricht festgelegt. Ebenso werden für ausgewählte JMS-Eigenschaften der Antwortnachricht die entsprechenden Werte der Ausgabenachricht kopiert. Die Richtung der Zuordnung hängt davon ab, ob das Tag <jms:property> im Eingabe- oder im Ausgabeabschnitt erscheint.

<wsdl:definitions ... > 

   <!-- Einfache oder komplexe Typen für Eingabe- und Ausgabenachrichten -->
   <wsdl:types> ... </wsdl:types>
   
   <wsdl:message name="JmsOperationRequest"> 
      <wsdl:part name="myInt" type="xsd:int"/>
      ...
   </wsdl:message>

   <wsdl:message name="JmsOperationResponse"> 
      <wsdl:part name="myString" type="xsd:String"/>
      ... 
   </wsdl:message>
 
   <wsdl:portType name="JmsPortType">
      <wsdl:operation name="JmsOperation">
         <wsdl:input name="Request" 
                     message="tns:JmsOperationRequest"/>
         <wsdl:output name="Response" 
                      message="tns:JmsOperationResponse"/>
      </wsdl:operation>
   </wsdl:portType>

   <wsdl:binding name="JmsBinding" type="JmsPortType">
      <!-- Gültig sind die zuvor aufgeführten JMS-Nachrichtentypen -->
      <jms:binding type="..." />

      <format:typemapping style="Java" encoding="Java">           
         <format:typemap name="xsd:int" formatType="int" />
         ...
      </format:typemapping>

      <wsdl:operation name="JmsOperation">
         <wsdl:input message="JmsOperationRequest">
            <jms:property message="tns:JmsOperationRequest" parts="myInt" />
            <jms:propertyValue name="myLiteralString" 
                          type="xsd:string" value="Hello World" />
            ...
         </wsdl:input>
         <wsdl:output message="JmsOperationResponse">
            <jms:property message="tns:JmsOperationResponse" parts="myString" />
            ...
         </wsdl:output>
      </wsdl:operation>
   </wsdl:binding>

   <wsdl:service name="JmsService">
      <wsdl:port name="JmsPort" binding="JmsBinding">
         <jms:address destinationStyle="queue" 
                      jndiConnectionFactoryName="myQCF"
                      jndiDestinationName="myDestination"/>
    </wsdl:port>
   </wsdl:service>

</wsdl:definitions>

Symbol, das den Typ des Artikels anzeigt. Taskartikel



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