Beispiel: Einen WS-Notification-Publisher registrieren

Verwenden Sie diese Task, um anhand des bereitgestellten Beispielcodeauszugs Code für eine Subscriber-Clientanwendung zu schreiben, die eine Konsumentenanwendung bei einem Broker subskribieren 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:

Führen Sie die folgenden Schritte aus, um Code für eine Subscriber-Clientanwendung zu schreiben, die eine Konsumentenanwendung bei einem Broker subskribieren kann. Weitere Informationen finden Sie im Beispielcodeextrakt.

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 eine Referenz für den Publisher (Erzeuger), der registriert wird. Enthält die Adresse des Web-Service des Erzeugers.
  4. Erstellen Sie eine Liste (einen Array) von Topicausdrücken, um die Topics zu beschreiben, für die der Erzeuger Nachrichten veröffentlicht.
  5. Legen Sie fest, dass der Publisher keine bedarfsbasierte Veröffentlichung verwendet.
  6. Legen Sie einen Wert für die ursprüngliche Beendigungszeit der Registrierung fest. Lesen Sie beispielsweise als Wert 1 Jahr nach dem aktuellen Wert fest.
  7. Erstellen Sie Holder für die Werte, die vom Broker zurückgegeben werden:
    • PublisherRegistrationReference definiert die Endpunktreferenz, die bei der Verwaltung der Registrierungslebensdauer verwendet wird.
    • ConsumerReference definiert die Endpunktreferenz, die in nachfolgenden Veröffentlichungen von Nachrichten verwendet wird.
  8. Starten Sie die Operation "RegisterPublisher" durch Aufruf der zugehörigen Methode im Stub.
  9. Rufen Sie die Referenz "PublisherRegistrationReference" ab.
  10. Rufen Sie die Referenz "ConsumerReference" ab.

Beispiel

Der folgende Beispielcode beschreibt einen JAX-RPC-Client in der Rolle der Publisher-Registrierung, der eine Publisher-Anwendung (Erzeugeranwendung) bei einem Broker registriert.

// 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);

// Eine Referenz für den Publisher (Erzeuger) erstellen, der registriert wird. Sie enthält die Adresse
// des Erzeuger-Web-Service.
EndpointReference publisherEPR =
    EndpointReferenceManager.createEndpointReference(new URI("http://myserver.mysom.com:9080/Producer"));

// Eine Liste (einen Bereich) von Topicausdrücken erstellen,
// um die Topics zu beschreiben, für die der Erzeuger Nachrichten veröffentlicht.
// In diesem Beispiel wird ein einziges Topic hinzugefügt.
Map prefixMappings = new HashMap();
prefixMappings.put("abc", "uri:mytopicns");
TopicExpression topic =
    new TopicExpression(TopicExpression.SIMPLE_TOPIC_EXPRESSION, "abc:xyz", prefixMappings);                
TopicExpression[] topics = new TopicExpression[] {topic};

// Festlegen, dass der Publisher keine bedarfsbasierte Veröffentlichung verwenden soll.
Boolean demand = Boolean.FALSE;

// Einen Wert für die ursprüngliche Beendigungszeit der Registrierung festlegen.
// Legen Sie beispielsweise den Wert "1 Jahr ab dem
// aktuellen Wert fest.
Calendar initialTerminationTime = Calendar.getInstance();
initialTerminationTime.add(Calendar.YEAR, 1);

// Holder für die Werte erstellen, die vom Broker zurückgegebenen werden:
// PublisherRegistrationReference: Eine Endpunktreferenz, die bei der
// Verwaltung der Registrierungslebensdauer verwendet wird.
EndpointReferenceTypeHolder pubRegMgrEPR = new EndpointReferenceTypeHolder();

// ConsumerReference: Eine Endpunktreferenz, die in nachfolgenden Veröffentlichungen von Nachrichten verwendet wird.
EndpointReferenceTypeHolder consEPR = new EndpointReferenceTypeHolder();

// Die Operation RegisterPublisher durch Aufruf der zugehörigen Methode im Stub starten.
stub.registerPublisher(publisherEPR, topics, demand, initialTerminationTime, null, pubRegMgrEPR, consEPR);

// Die PublisherRegistrationReference abrufen.
EndpointReference registrationEPR = pubRegMgrEPR.value;

// Die ConsumerReference abrufen.
EndpointReference consumerReferenceEPR = consEPR.value;

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_reg
Dateiname:tjwsn_ex_pub_reg.html