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.
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
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;