2009-06-08 13 views
13

Unsere Java-App schreibt über eine Weblogic JMS Message Bridge in Warteschlangen der MQ-Serie. Die tatsächlichen Verbindungs-/Warteschlangendetails der MQ-Serie werden in der Mb-Datei mit der .bindings-Datei auf dem App-Server gespeichert. Ich habe mich nie wirklich mit der Bindungsdatei beschäftigt und was alle Einträge bedeuten. Kann jemand Anleitung geben, um diese Datei zu verstehen?Grundlegendes zu MQ-Bindings-Dateien

Antwort

35

Bevor wir die .bindings-Datei adressieren, müssen wir ein wenig zurückgehen und JNDI - das Java Naming and Directory Interface - betrachten und wie es von JMS verwendet wird. Die Warteschlange, das Thema und verschiedene Arten von Connection Factory sind Laufzeit-JMS-Objekte mit Methoden und Attributen. Sie können sie jedoch vordefinieren und in einer Registrierung speichern, in der die JMS-Anwendung sie mithilfe von JNDI-Suchvorgängen abrufen kann.

Dies ist hilfreich, da die Objekte wie Münzen sind, da sie eine JMS-Seite und eine providerspezifische Seite haben. Auf der JMS-Seite sieht jedes administrierte Objekt ungefähr gleich aus. Unabhängig vom zugrunde liegenden Transportanbieter verfügt eine ConnectionFactory über die gleichen Methoden und Attribute. Auf der Provider-spezifischen Seite unterscheiden sich die verwalteten Objekte jedoch stark von einem Transportanbieter zum nächsten. Die ConnectionFactory, die mit einem WebSphere MQ-Transport verwendet wird, enthält beispielsweise ein Attribut für den Warteschlangenmanager. Kein anderer Transportanbieter hat einen "Warteschlangenmanager", daher ist dieses Attribut nur in einem WMQ-Kontext gültig.

Die beiden Aspekte von verwalteten Objekten sind der "Klebstoff", mit dem JMS unabhängig vom Transportanbieter arbeiten kann. In Ihrem Code müssen Sie nur eine ConnectionFactory suchen und Sie erhalten ein Objekt, das für Methodenaufrufe geeignet ist. Im Hintergrund verwenden die JMS-Klassen des Providers die anbieterspezifischen Objektattribute, um einen Kontext bereitzustellen, um die generischen JMS-API-Aufrufe in anbieterspezifische Aufrufe zu konvertieren. Daher führt das Verbindungsobjekt, das Sie instanziieren, zu einem WMQ CONNECT-Aufruf, der einen QMgr-Namen, Host, Port, Kanal und eine Vielzahl anderer Parameter angibt.

OK, ich versprach, in die .bindings-Datei zu gelangen. Ich sagte vorher, dass die JNDI-Suche gegen "eine Registrierung" war und das bedeutet normalerweise LDAP oder ähnliches. Aber Sun hat JNDI wie JMS so entwickelt, dass es eine API gibt, die Ihr Programm verwendet, und eine SPI oder Service Provider-Schnittstelle, die von der Registry verwendet wird. Also, obwohl JNDI in LDAP implementiert werden kann, gibt es nichts, das besagt, dass in LDAP implementiert werden muss. Eine der Basisimplementierungen, die Sun von Anfang an zur Verfügung stellte, war die Verwendung des lokalen Dateisystems als Registrierung. In dieser Implementierung ist der Stammkontext ein Dateiordner. Jeder Kontext kann entweder einen anderen Unterkontext (einen anderen Dateiordner) oder Objektdefinitionen speichern. Normalerweise gibt es einen Ordner für den Stammkontext, und alle Objekte sind auf dieser Ebene definiert. Die Datei, die die Objektdefinitionen enthält, ist ... Sie haben es erraten ... die .bindings-Datei.

Die Objekte in der .bindings-Datei werden in Triplets für Name/Typ/Wert dargestellt. Daher enthält jede .bindings-Datei normalerweise viele Objekte. Jedes Objekt hat viele Attribute. Jedes Attribut hat einen Namen, einen Wert und den Typ der Variablen, die den Wert enthält. Die beste Methode, um die .bindings-Datei in den Griff zu bekommen, besteht darin, sie zu sortieren, wodurch alle Objekte und ihre Attribute zusammengefügt und lesbarer gemacht werden. Eine Liste der möglichen Eigenschaften finden Sie unter the manual.

Natürlich soll die .bindings-Datei ein kompiliertes Artefakt sein und nicht für Menschen lesbar sein. IBM stellt das JMSAdmin-Tool zum Generieren und Lesen der .bindings-Datei bereit. Sie können WMQ Explorer auch verwenden, um die verwalteten Objekte in einer .bindings-Datei zu verwalten. Diese werden auch in dem oben verlinkten Handbuch besprochen. Es gibt auch ein (einige sagen) gute Tutorial in developerWorks here.