Topologie für WS-Notification als Einstiegs- oder Ausstiegspunkt für den Service Integration Bus
Die in WebSphere Application Server bereitgestellte WS-Notification-Unterstützung ermöglicht nicht nur den Austausch zwischen WS-Notification-Erzeugern und -Konsumenten, sondern dient auch als Einstiegs- oder Ausstiegspunkt für den Service Integration Bus. Von WS-Notification-Anwendungen veröffentlichte Ereignisbenachrichtigungen werden in den Service Integration Bus eingefügt, wo sie geändert, umgeleitet oder von anderen Anwendungen, die mit dem Bus verbunden sind, konsumiert werden können. Gleichermaßen können die von SIB-Clients wie JMS gesendeten Veröffentlichungen von WS-Notification-Konsumenten empfangen werden.
WS-Notification kann in der Weise konfiguriert werden, dass Web-Service-Anwendungen Ereignisbenachrichtigungen empfangen, die von anderen Clients des Service Integration Bus generiert wurden, z. B. von JMS-Clients. Auf ähnliche Weise können Web-Service-Anwendungen Benachrichtigungen generieren, die von anderen Clienttypen empfangen werden sollen. Diese Konfiguration wurde durch Erstellen eines peramenten Topic-Namespace erzielt, in dem die Nachrichten von den Web-Service- und Nicht-Web-Service-Clients des Busses gemeinsam genutzt werden können. Eine Beschreibung hierzu finden Sie im Artikel Zugriff von WS-Notification-Anwendungen auf einen vorhandenen Bustopicbereich unterstützen.
In der folgenden Abbildung fügt ein WS-Notification-Publisher eine Ereignisbenachrichtigung in den Notification-Broker ein, die von einem JMS-Nachrichtenkonsumenten empfangen wird. Auf der anderen Seite kann ein JMS-Nachrichtenerzeuger eine Nachricht veröffentlichen, die von einem NotificationConsumer empfangen wird. Nachrichten werden vom Publisher über SOAP over HTTP an den Notification-Broker übergeben und über einen WebSphere Application Server an den JMS-Provider und von dort aus über JFAP an den JMS-Nachrichtenkonsumenten weitergeleitet. In der anderen Richtung werden Nachrichten vom JMS-Nachrichtenerzeuger über JFAP an den JMS-Provider übergeben, dann über einen WebSphere Application Server an den Notification-Broker und von dort aus über SOAP over HTTP an den Notification-Konsumenten weitergeleitet.

Interaktion mit JMS-Nachrichtentypen
Der WS-Notification-Service ist zuständig für das Einfügen von Nachrichten in den Service Integration Bus (als Antwort auf Notify-Operationen, die von Web-Services empfangen werden) und für den Empfang von Nachrichten vom Bus (um die Nachrichten als Ergebnis einer Subscribe-Operation an einen Web-Service zu übermitteln).
Nachrichten, die vom WS-Notification-Service eingefügt werden, haben nicht den JMS-BytesMessage-Typ. Wenn daher ein Web-Service die Operation Notify für einen WS-Notification-Servicepunkt aufruft, dann wird der Anwendungsinhalt der Nachricht in UTF-8-Codierung in den Hauptteil einer JMS-BytesMessage eingefügt.
Für Nachrichten, die der WS-Notification-Service als Antwort auf eine Subskription empfängt, wird die umgekehrte Konvertierung ausgeführt. Die empfangene Nachricht wird in den geeigneten JMS-Nachrichtentyp konvertiert. Wird als geeigneter Typ ein BytesMessage-Typ festgelegt, dann wird der Hauptteil der Nachricht mittels UTF8-Codierung in eine Zeichenfolge konvertiert und durchläuft den Code zwecks Überprüfung, bevor er an den Web-Service gesendet wird, von dem er angefordert wurde.
Falls die konvertierte BytesMessage-Zeichenfolge kein XML-Element enthält, wenn sie in eine Zeichenfolge konvertiert wird, dann wird diese Nachricht ignoriert und so behandelt, als wäre sie von einer Anwendung erzeugt worden, die keine Kenntnis von WS-Notification (JMS) hat.
Wenn festgestellt wird, dass die empfangene Nachricht eine TextMessage (Textnachricht) ist, dann wird der Inhalt des Nachrichtenhauptteils extrahiert und die Verarbeitung findet in derselben Weise statt wie für den konvertierten Inhalt der ByteMessage (Bytenachricht). Dies bedeutet, dass JMS-Anwendungen, die Ereignisbenachrichtigungen für eine WS-Notification-Anwendung bereitstellen möchten, den Inhalt entweder als BytesMessage oder als TextMessage senden können, je nachdem, was für die Anwendung am besten geeignet ist.
Falls die empfangene Nachricht weder eine BytesMessage noch eine TextMessage ist, dann wird sie verworfen, da sie von einer Anwendung erzeugt wurde, die keine Kenntnis von WS-Notification (JMS) hat.