Beispiel: Eine WS-Notification-Nachricht veröffentlichen

Verwenden Sie diese Task, um auf der Basis des folgenden Beispielcodeauszugs den Code für eine Publisher-Client-Anwendung zu schreiben, die eine Benachrichtigung in einem Broker veröffentlichen kann.

Informationen zu diesem Vorgang

Dieses Beispiel basiert auf der Verwendung der JAX-RPC-APIs (Java™ API for XML-based Remote Procedure Call) zusammen mit Code, der mit Tool WSDL2Java (auf der Basis der beim Erstellen des WS-Notification-Servicepunkts generierten NotificationBroker-WSDL) generiert wird, und den APIs und SPIs von WebSphere Application Server.

In WebSphere Application Server gibt es zwei Implmentierungen des WS-Notification-Service: Version 6.1 und Version 7.0. Dieses JAX-RPC-Beispiel kann erfolgreich mit WS-Notification-Servicepunkten der Version 6.1 oder Version 7.0 interagieren. Wenn Sie WS-Notification mit Richtliniensätzen verwenden möchten, z. B. für die Kombination mit WS-ReliableMessaging, müssen Ihre WS-Notification-Anwendungen jedoch so codiert werden, dass sie das Programmiermodell JAX-WS (Java API for XML-based Web Services) verwenden, und sie müssen mit WS-Notification-Servicepunkten der Version 7.0 interagieren. Wenn Sie mit der Programmierung von JAX-WS-Clientanwendungen noch nicht vertraut sind, sehen Sie sich die folgenden Artikel an: Der Artikel Writing JAX-WS applications for WS-Notification enthält ein Beispiel für eine JAX-WS-Publisher-Client-Anwendung.

Verwenden Sie zum Schreiben des Codes für eine Publisher-Client-Anwendung, die eine Benachrichtigung in einem Broker veröffentlichen kann, den folgenden Beispielcodeauszug, um weitere Informationen zu erhalten.

Vorgehensweise

  1. Ermitteln Sie den JAX-RPC-Service. Der JNDI-Name ist spezifisch für Ihre Web-Service-Clientimplementierung.
  2. Rufen Sie einen Stub für den Port ab, an dem Operationen gestartet werden sollen.
  3. Erstellen Sie den Nachrichteninhalt für eine Benachrichtigung.
  4. Erstellen Sie eine Benachrichtigung aus dem Inhalt.
  5. Fügen Sie der Benachrichtigung einen Topicausdruck hinzu. Der Topicausdruck muss angeben, welchen Topics die Nachricht entspricht.
  6. Erstellen Sie weitere optionale Informationen.
  7. Optional: Wenn der Broker erfordert, dass sich die Publisher-Client-Anwendungen registrieren, ordnen Sie die Anforderung einer bestimmten Publisher-Registrierung zu. Die registrationEPR ist die ConsumerReference EndpointReference (Konsumentenreferenz-Endpunktreferenz), die der Broker beim Aufruf der Operation RegisterPublisher zurückgibt.
  8. Rufen Sie die Operation "Notify" durch Aufruf der zugehörigen Methode im Stub auf.

Beispiel

Der folgende Beispielcode stellt eine Publisher-Client-Anwendung dar, die eine Benachrichtigung in einem Broker veröffentlichen kann:

// JAX-RPC-Service suchen. Der JNDI-Name ist spezifisch für Ihre Web-Service-Clientimplementierung.
InitialContext context = new InitialContext();
javax.xml.rpc.Service service = (javax.xml.rpc.Service) context.lookup(
    "java:comp/env/services/NotificationBroker");

// Ein Stub für den Port abrufen, auf dem Operationen gestartet werden sollen.
NotificationBroker stub = (NotificationBroker) service.getPort(NotificationBroker.class);

// Den Nachrichteninhalt für eine Benachrichtigung erstellen.
SOAPElement messageContents = null;
javax.xml.soap.SOAPFactory soapFactory = javax.xml.soap.SOAPFactory.newInstance();
if (soapFactory instanceof IBMSOAPFactory) {
    // Sie können die von der API "IBMSOAPFactory" bereitgestellten Methoden zum Hinzufügen von Werten
    // verwenden, um das SOAPElement aus einer XML-Zeichenfolge zu erstellen.
    String messageContentsXML = "<xyz:MyData xmlns:xyz=\"uri:mynamespace\">Some data</xyz:MyData>";        
    messageContents = ((IBMSOAPFactory) soapFactory).createElementFromXMLString(messageContentsXML);
} else {
    // Das SOAPElement mit den "javax.xml.soap"-Standard-APIs erstellen.
    messageContents = soapFactory.createElement("MyData", "xyz", "uri:mynamespace");
    messageContents.addTextNode("Some data");
}

// Eine Benachrichtigung aus dem Inhalt erstellen
NotificationMessage message = new NotificationMessage(messageContents);

// Einen Topicausdruck zur Benachrichtigung hinzufügen, der anzeigt,
// welchen Topics die Nachricht entspricht.
Map prefixMappings = new HashMap();
prefixMappings.put("abc", "uri:example");
TopicExpression exp =
    new TopicExpression(TopicExpression.SIMPLE_TOPIC_EXPRESSION, "abc:ExampleTopic", prefixMappings);        
message.setTopic(exp);

// Optionale Informationen erstellen.
SOAPElement[] optionalInformation = new SOAPElement[] {};
        
/*
Optional
--------
Die folgende Zeile bewirkt, dass der Anforderung eine bestimmte Publisher-Registrierung zugeordnet wird.
Dies ist erforderlich, falls der Broker eine Registrierung der Publisher fordert.
Die registrationEPR ist die
ConsumerReference EndpointReference (Konsumentenreferenz-Endpunktreferenz), die der Broker
beim Aufruf der Operation RegisterPublisher zurückgibt.
        
    ((Stub) stub)._setProperty(WSAConstants.WSADDRESSING_DESTINATION_EPR, consumerReferenceEPR);
*/

// Die Operation Notify durch Aufruf der zugehörigen Methode im Stub starten.
stub.notify(new NotificationMessage[] { message }, optionalInformation);

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