So stellen JMS-Anwendungen eine Verbindung zu einer Messaging-Engine in einem Bus her
Es gibt verschiedene Faktoren, die beeinflussen, wie JMS-Anwendungen eine Verbindung zu einem Service Integration Bus herstellen, sodass sie vom Bus bereitgestellte Ressourcen verwenden können.
Wenn eine Anwendung eine Verbindung zu einem Service Integration Bus herstellt, stellt sie eigentlich eine Verbindung zu einer Messaging-Engine im Bus her.
Standardmäßig verbindet die Umgebung Anwendungen automatisch mit einer verfügbaren Messaging-Engine im Bus. Sie können jedoch zusätzliche Konfigurationsdetails angeben, um den Verbindungsprozess zu beeinflussen (z. B. spezielle Bootstrap-Server angeben) oder die Verbindung auf eine Untergruppe verfügbarer Messaging-Engines einzuschränken oder die Verfügbarkeit und Leistung zu verbessern oder sicherzustellen, dass empfangene Nachrichten sequenziell verarbeitet werden.
Anwendungen, die in einem Anwendungsserver ausgeführt werden: Standardkonfiguration
In einem Anwendungsserver ausgeführte Anwendungen werden von der Umgebung von WebSphere Application Server an eine verfügbare Messaging-Engine weitergeleitet.
Sollte eine Messaging-Engine im selben Server gefunden werden, wird eine Verbindung erstellt. Dies ist die schnellste verfügbare Verbindung zwischen einer Anwendung und einer Messaging-Engine. Wenn eine Messaging-Engine in einem anderen Prozess - auf demselben oder einem anderen Host - gefunden wird, wird eine ferne Verbindung hergestellt. Sollte keine geeignete Messaging-Engine gefunden werden, kann die Anwendung keine Verbindung zum Bus herstellen.

Die Abbildung zeigt zwei Anwendungen, die in Anwendungsservern ausgeführt werden. Die Anwendung X in Server3 ist mit der Messaging-Engine verbunden, die in demselben Server ausgeführt wird. Die Anwendung Y im Server1 ist mit einer Messaging-Engine verbunden, die zwar in demselben Bus, aber in einem anderen Server und auf einem anderen Host ausgeführt wird, weil Server1 keine geeignete Messaging-Engine hat.
Anwendungen, die nicht in einem Anwendungsserver ausgeführt werden
Clientanwendungen, die nicht in einem Anwendungsserver, sondern in einem Client-Container oder außerhalb der Umgebung von WebSphere Application Server ausgeführt werden, können selbst keine geeignete Messaging-Engine suchen und müssen einen Bootstrapprozess über einen Bootstrap-Server ausführen. Ein Bootstrap-Server ist ein Anwendungsserver, in dem zwar der Service SIBService, aber nicht unbedingt Messaging-Engines ausgeführt werden. Der Bootstrap-Server wählt eine Messaging-Engine aus, die in einem Anwendungsserver ausgeführt wird, der die erforderliche Zieltransportkette unterstützt.

Diese Abbildung zeigt eine Clientanwendung, die nicht in einem Anwendungsserver ausgeführt wird. Um eine Verbindung zu einer Messaging-Engine herzustellen, stellt die Anwendung zunächst eine Verbindung zu einem Bootstrap-Server her. Der Bootstrap-Server wählt eine Messaging-Engine aus und weist dann die Clientanwendung an, eine Verbindung zu dieser Messaging-Engine herzustellen.
Ein Bootstrap-Server verwendet einen speziellen Port und eine spezielle Bootstraptransportkette, die zusammen mit dem Hostnamen die Endpunktadresse des Bootstrap-Servers bilden.
![[IBM i]](../images/iseries.gif)
Wenn Sie einen Anwendungsserver erstellen, wird dieser automatisch einem eindeutigen, nicht sicheren Bootstrap-Port (SIB_ENDPOINT_ADDRESS) und einem sicheren Bootstrap-Port (SIB_ENDPOINT_SECURE_ADDRESS) zugeordnet. Wenn Sie einen Anwendungsserver als Bootstrap-Server verwenden möchten und dem Server ein anderer nicht sicherer Port als 7276 zugeordnet ist oder wenn Sie den sicheren Port verwenden möchten, müssen Sie die Endpunktadresse des Servers mit der Eigenschaft "Providerendpunkte" der Verbindungsfactory angeben.
Die Endpunktadressen für Bootstrap-Server müssen in jeder Verbindungsfactory angegeben werden, die von Anwendungen außerhalb eines Anwendungsservers verwendet werden. Damit Sie keine lange Liste mit Bootstrap-Servern angeben müssen, können Sie einige wenige hoch verfügbare Server angeben, die als Bootstrap-Server definiert sind. So müssen Sie in jeder Verbindungsfactory nur eine kurze Liste von Bootstrap-Servern angeben.
Auswahlprozess für Messaging-Engines
- Für JMS-Clientanwendungen werden diese Informationen in der Verbindungsfactory konfiguriert.
- Für MDB-Anwendungen werden diese Informationen in der Aktivierungsspezifikation konfiguriert.
- Für anderen Anwendungstypen werden diese Informationen von der Anwendung über das Programm konfiguriert.
- Wenn eine Messaging-Engine im erforderlichen Bus in demselben Anwendungsserver ausgeführt wird, wird eine Verbindung von der Anwendung zur Messaging-Engine hergestellt. Ist keine geeignete Messaging-Engine vorhanden, wird die nächtse Regel geprüft.
- Wenn eine Messaging-Engine auf demselben Host wie die Anwendung ausgeführt wird, stellt die Anwendung eine Fernverbindung zur ausgewählten Messaging-Engine her. Ist keine geeignete Messaging-Engine vorhanden, wird die nächtse Regel geprüft.
- Wenn eine Messaging-Engine irgendwo im Bus ausgeführt wird, stellt die Anwendung eine Fernverbindung zur ausgewählten Messaging-Engine her. Ist keine geeignete Messaging-Engine vorhanden, ist der Verbindungsversuch nicht erfolgreich.
In beiden Fällen (d. h. bei einer Anwendung, die in einem Anwendungsserver ausgeführt wird, und bei einer Anwendung, die außerhalb eines Anwendungsservers ausgeführt wird) können Sie den Bereich der Messaging-Engines, die für die Verbindung verfügbar sind, auf eine Untergruppe der im Service Integration Bus verfügbaren Messaging-Engines einzuschränken. Dazu konfigurieren Sie die folgenden Verbindungseigenschaften der Verbindungsfactory bzw. Aktivierungsspezifikation:
- Ziel
Bevor die auf Verbindungsproximität basierende Suche zur Auswahl einer geeigneten Messaging-Engine durchgeführt wird, werden die Messaging-Engines ausgewählt, die Member der angegebenen Zielgruppe sind. Die auf Verbindungsproximität basierende Suche wird dann auf diese Messaging-Engines beschränkt. Wenn keine Zielgruppe angegeben ist (Standardeinstellung), werden bei der Überprüfung der Verbindungsproximität alle Messaging-Engines im Bus berücksichtigt.
Wenn die Eigenschaft Zieltyp beispielsweise auf Name des Busmembers gesetzt wird, gibt die Eigenschaft Ziel den Namen des Busmembers an, aus dem in Frage kommende Messaging-Engines ausgewählt werden können.
- Zieltyp
- Name des Busmembers
- Der Name eines Busmembers. Diese Option ruft die aktiven Messaging-Engines im angegebenen Busmember (einem Anwendungsserver oder Server-Cluster) ab.
- Name der angepassten Gruppe von Messaging-Engines
- Der Name einer angepassten Gruppe von Messaging-Engines (ein sich selbst deklarierender Cluster). Diese Option ruft die aktiven Messaging-Engines ab, die in der angegebenen angepassten Gruppe registriert sind.
- Name der Messaging-Engine
- Der Name einer Messaging-Engine. Diese Option ruft die verfügbaren Endpunkte ab, die verwendet werden können, um die angegebene Messaging-Engine zu erreichen.
- Zielsignifikanz
- Diese Eigenschaft definiert, ob die Überprüfung der Verbindungsproximität auf die
Messaging-Engines in der Zielgruppe beschränkt werden soll.
- Bevorzugt
- Vorzugsweise soll eine Messaging-Engine aus der Zielgruppe gewählt werden. Es wird nur dann eine Messaging-Engine aus der Zielgruppe gewählt, wenn eine verfügbar ist. Sollte in der Zielgruppe keine Messaging-Engine verfügbar sein, wird eine Messaging-Engine außerhalb der Zielgruppe gewählt, sofern eine solche im selben Service Integration Bus verfügbar ist.
- Erforderlich
- Es muss eine Messaging-Engine aus der Zielgruppe gewählt werden. Es wird nur dann eine Messaging-Engine aus der Zielgruppe gewählt, wenn eine verfügbar ist. Sollte in der Zielgruppe keine Messaging-Engine verfügbar sein, schlägt der Verbindungsprozess fehl.
- Zieltransportkette für eingehende Daten
Der Name der Eingangstransportkette der Messaging-Engine, die die Anwendung verwendet, wenn sie eine Verbindung zu einer Messaging-Engine in einem von der Anwendung separaten Prozess herstellt.
Diese Transportketten geben die Kommunikationsprotokolle vor, die für die Kommunikation mit dem Anwendungsserver verwendet werden können, mit dem die Clientanwendung verbunden ist. Wenn eine Messaging-Engine in einem anderen Prozess ausgewählt wird, kann eine Verbindung nur dann hergestellt werden, wenn die Messaging-Engine in einem Server ausgeführt wird, der die angegebene Transportkette für eingehende Anforderungen verwendet.
Die folgenden vordefinierten Transportketten für eingehende Daten werden bereitgestellt:- InboundBasicMessaging
- JFAP over TCP/IP
- InboundSecureMessaging
- JFAP over SSL over TCP/IP
- Proximität für Verbindung
- Für eine Anwendung, die in einem Anwendungsserver ausgeführt wird, definiert dieses Eigenschaft die
Proximität (Nähe) der Messaging-Engines zum Anwendungsserver. Für eine Anwendung, die nicht in einem
Anwendungsserver ausgeführt wird, definiert diese Eigenschaft die Proximität der Messaging-Engines zum
Bootstrap-Server.
- Bus
- Es können Verbindungen zu Messaging-Engines im selben Bus hergestellt werden.
Bei der Auswahl wird die folgende Reihenfolge eingehalten: Zunächst wird eine geeignete Messaging-Engine im selben Server, danach auf demselben Host und zuletzt auf einem anderen Host gesucht.
- Cluster
- Es können Verbindungen zu Messaging-Engines im selben Server-Cluster hergestellt werden. Wenn die Anwendung nicht in einem Cluster-Server ausgeführt wird oder der Bootstrap-Server nicht zu einem Cluster gehört, sind keine geeigneten Messaging-Engines
vorhanden.
Bei der Auswahl wird die folgende Reihenfolge eingehalten: Zunächst wird eine geeignete Messaging-Engine im selben Server, danach auf demselben Host und zuletzt auf einem anderen Host gesucht.
- Host
- Es können Verbindungen zu Messaging-Engines auf demselben Host hergestellt werden. Bei der Auswahl der Messaging-Engine wird folgende Reihenfolge eingehalten: Zunächst wird eine geeignete Messaging-Engine im selben Server und danach erst auf demselben Host gesucht.
- Server
- Es können Verbindungen zu Messaging-Engines im selben Anwendungsserver hergestellt werden.
- Alle Server im Cluster können Nachrichten von der MDB-Anwendung empfangen, um die vollständige Verarbeitungsleistung im Cluster zu nutzen.
- Es kann nur jeweils ein Server Nachrichten von der MDB-Anwendung empfangen, sodass eine sequenzielle Verarbeitung der Nachrichten gewährleistet wird.
Weitere Informationen hierzu finden Sie im Artikel So stellen nachrichtengesteuerte Beans eine Verbindung in einem Cluster her.