Eigenschaften für die Nachrichtenadressierung mit den IBM proprietären Web-Services-Addressing-SPIs angeben und abrufen

Mit den proprietären SPIs (System Programming Interface, Systemprogrammierschnittstelle) für Web Services Addressing (WS-Addressing) können Sie den SOAP-Headern einer abgehenden Clientnachricht über Eigenschaften im JAX-WS-BindingProvider-Anforderungskontext bzw. im JAX-RPC-Stub- oder Call-Objekt sogenannte WS-Addressing-MAPs (Message Addressing Properties, Eigenschaften für die Nachrichtenadressierung) hinzufügen. Wenn der Zielendpunkt die Nachricht empfängt, ermöglicht die SPI dem Endpunkt, die MAPs über die Eigenschaften im Nachrichtenkontext anzufordern.

Informationen zu diesem Vorgang

Es gibt keine entsprechenden SPIs im Standard JAX-WS. Wenn Sie Eigenschaften für die Nachrichtenadressierung in einem Client definieren möchten, der JAX-WS-Endpunktreferenzen verwendet, müssen Sie die Endpunktreferenzen in die IBM proprietären Klassen konvertieren, bevor Sie sie mit diesen SPIs verwenden.

Führen Sie diese Task as, wenn Sie ein Web-Service-Entwickler sind, der die WS-Addressing-Unterstützung verwendet, oder ein Systemprogrammierer, der die IBM proprietären WS-Addressing-SPIs verwendet, um Eigenschaften für die Nachrichtenadressierung, wie z. B. Endpunktreferenzen für Fehler oder Antworten, für Web-Service-Nachrichten anzugeben.

Die Eigenschaften, die Sie definieren oder abrufen können, sind zusammen mit dem Java™-Typ der Eigenschaftsinstanzen im Artikel IBM proprietäre WS-Addressing-SPIs beschrieben. Die meisten Eigenschaften haben den Typ "com.ibm.websphere.wsaddressing.EndpointReference", z. B. Ziel-, Antwort- oder Fehlerendpunktreferenzen. Die Beziehungseigenschaft ist ein Objekt vom Typ "java.util.Set", das Instanzen der Klasse "com.ibm.wsspi.wsaddressing.Relationship" enthält. Verwenden Sie Beziehungen, wenn Sie eine Zuordnung zwischen Nachrichten angeben möchten. Beispielsweise können Sie in einer Antwortnachricht die ID der Nachricht angeben, auf die Sie antworten. Die Aktionseigenschaft ist ein Objekt vom Typ "AttributedURI", das eine bestimmte Methode oder Operation am Zielendpunkt angibt.
Achtung: Die Eigenschaften für die Zielendpunktreferenz und die Aktion sind erforderlich, damit die Nachricht mit WS-Addressing konform ist.

Vorgehensweise

  1. Rufen Sie im Client die Endpunktreferenz vom Service ab, und ordnen Sie sie dem Anforderungskontext Ihres BindingProvider-Objekts bzw. Stub- oder Call-Objekts zu. Verwenden Sie dazu die Beschreibung im Artikel JAX-RPC-Web-Service-Anwendung erstellen, die Web Services Addressing verwendet.
  2. Erstellen Sie Instanzen der erforderlichen Eigenschaften. Wenn Sie beispielsweise eine Endpunktreferenz für den Zielservice angeben möchten, an den Antworten gesendet werden sollen, erstellen Sie eine Instanz der Klasse "com.ibm.websphere.wsaddressing.EndpointReference", die Sie als Eigenschaft WSADDRESSING_REPLYTO_EPR" verwenden möchten.
  3. Legen Sie die erforderlichen Eigenschaften fest, indem Sie sie dem Anforderungskontext des BindingProvider-Objekts bzw. dem Stub- oder Call-Objekt zuordnen. Wenn Sie ein Stub- oder Call-Objekt verwenden, verwenden Sie die Methode "setProperty(String property_name, Object value)". Anders als die für den ersten Schritt erforderliche Endpunktreferenz müssen diese Endpunktreferenzen nicht in einen anderen Typ konvertiert werden, weil sie im Header der SOAP-Nachricht und nicht im Hauptteil übergeben werden. Im folgenden Beispiel werden eine Zielendpunktreferenz und eine Antwortendpunktreferenz im Anforderungskontext eines BindingProvider-Objekts definiert:
    import javax.xml.ws.BindingProvider;
    ...
     javax.xml.ws.Service jaxwsServiceObject=...;
     Printer myPrinterProxy = jaxwsServiceObject.getPort(portName, Printer.class);
     
     javax.xml.ws.BindingProvider myBindingProvider = (javax.xml.ws.BindingProvider)myPrinterProxy;
    
     // Anforderungskontext für das BindingProvider-Objekt abrufen
     Map myMap = myBindingProvider.getRequestContext();
    
     // Endpunktreferenz für den Web-Service zuordnen. Diese Eigenschaft ist erforderlich, damit die Nachricht
     // WS-Addressing-konform ist.
      myMap.put(WSADDRESSING_DESTINATION_EPR, destinationEpr);
    
     // Endpunktreferenz zuordnen, die die Antwort im Anforderungskontext darstellt
     myMap.put(WSADDRESSING_REPLYTO_EPR, replyToEpr);
    wenn der Aufruf im BindingProvider-, Stub- oder Call-Objekt stattfindet, fügt das Produkt die entsprechenden MAPs dem Nachrichtenheader hinzu.
  4. Rufen Sie auf Serverseite die MAPs aus der eingehenden Nachricht über das javax.xml.ws.WebServiceContext- oder javax.xml.rpc.handler.MessageContext-Objekt ab, das sich derzeit im Thread befindet. Wenn WebSphere Application Server die Nachricht empfängt, werden die MAP-Informationen in den Nachrichtenkontext des Threads kopiert und damit dem Service zur Verfügung gestellt. Sie können den Nachrichtenkontext beispielsweise mithilfe des Sitzungskontexts der Endpunkt-Enterprise-Bean abrufen. Weitere Informationen zu Nachrichtenkontexten finden Sie im Standard JSR-109. Im folgenden Beispiel wird die Antwortendpunktreferenz über den Web-Service-Kontext abgerufen:
    import javax.xml.ws.handler.MessageContext;
    import javax.xml.ws.WebServiceContext; 
    ...
    
      // Nachrichtenkontext aus dem Web-Service-Kontext abrufen
      private WebServiceContext wsContext;
      MessageContext context = wsContext.getMessageContext();
    
      // Antwortendpunktreferenz abrufen
      replyToEpr = context.getProperty(WSADDRESSING_INBOUND_REPLYTO_EPR);

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=twbs_wsa_maps
Dateiname:twbs_wsa_maps.html