El WMQInitialContextFactory
ist eine Klasse, die einen JNDI-Anbieter über eine WebSphere MQ-Warteschlange implementiert. Anstatt die verwalteten Objekte in einer .bindings-Datei oder in LDAP zu speichern, werden sie serialisiert und in einer Warteschlange gespeichert, und diese Klasse ermöglicht es Ihnen, diese Warteschlange wie einen weiteren JNDI-Speicher zu behandeln. Diese Klasse war immer nur als JNDI-Anbieter gedacht und nicht als Ersatz für die eigentliche IBM JMS-Implementierung. Da das Speichern von verwalteten Objekten in einem Topic nicht funktionieren würde, enthalten diese Klassen keine Topic Factories. Das ist auch nicht anders zu erwarten.
Meiner Meinung nach ist das Problem mit WMQInitialContextFactory
ist, dass sie zunächst eine Verbindung zu WebSphere MQ herstellen muss, um eine Verbindungsfabrik zu erhalten, die dann der Anwendung mitteilt, wie sie sich mit WebSphere MQ verbinden soll. Das macht den verlinkten Artikel verwirrend, denn es scheint, dass die gesamte Konfiguration, die WMQ-Verbindungsdetails usw. der Anwendung zugute kommen, während in Wirklichkeit nur ein JNDI-Anbieter gebootet wird, von dem erwartet wird, dass er über definierte Verbindungsfabrik-Objekte mit denselben Informationen verfügt.
Was in dem Artikel fehlt, ist, dass der Autor das IBM-Tool JMSAdmin hätte verwenden müssen, um sich mit dem MQInitialContext zu verbinden und die ConnectionFactory und andere verwaltete Objekte zu definieren, bevor er die Anwendung mit demselben Initial Context verbindet, um auf sie zuzugreifen.
Fürs Protokoll: Die WebSphere MQ JMS-Klassen unterstützen die JMS 1.1 ConnectionFactory- und Destination-Klassen schon seit geraumer Zeit. Davor unterstützten sie sowohl Warteschlangen als auch Themen gemäß der JMS 1.0 Spezifikation.
Sie können die IBM WMQ JMS-Implementierung herunterladen als StützPac MQC7 . Es gibt viel mehr als nur die jar-Dateien. Sie erhalten zum Beispiel jede Menge Beispielcode, Diagnose- und Trace-Utilities, Dokumentation usw. Sie erhalten auch die richtigen Jar-Dateien.
Wenn Sie eine .bindings-Datei (initialer Kontext des Dateisystems) anstelle der WMQInitialContextFactory
laden Sie das neueste WebSphere MQ Explorer-Tool als SupportPac MS0T . Sie können ein Verzeichnis erstellen, WMQ Explorer darauf verweisen und alle Ihre Verbindungsfabriken und Ziele definieren. (Oder Sie verwenden domänenspezifische QueueConnectionFactory und TopicConnectionFactory, wenn Sie es ganz altmodisch mögen). Weitere Informationen über die Verwendung von WMQ Explorer zur Definition Ihrer verwalteten Objekte finden Sie unter: _Erstellen und Konfigurieren von JMS-verwalteten Objekten_
Wenn Sie eine Anleitung wünschen, die eine Demonstration der Verwendung des IBM-Tools JMSAdmin zur Erstellung der .bindings-Datei enthält, schauen Sie unter _Ausführen einer eigenständigen Java-Anwendung auf WebSphere MQ V6.0 . (Das JMSAdmin-Tool wird mit dem WMQ-Server installiert, und ich glaube, es ist auch in der oben verlinkten kostenlosen MS0T-WMQ-Client-Installation enthalten). Die Dokumentation für das JMSAdmin-Tool finden Sie hier: Verwendung des WebSphere MQ JMS-Verwaltungstools_
Unabhängig davon, welche Methode Sie zur Erstellung von verwalteten Objekten wählen, können Sie alle möglichen Eigenschaften, die von der IBM-Implementierung unterstützt werden, unter nachschlagen: [Eigenschaften von WebSphere MQ-Klassen für JMS-Objekte](http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/topic/com.ibm.mq.csqzaw.doc/jm10910.htm)_