2009-06-08 77 views
13

我們的Java應用程序通過Weblogic JMS消息橋寫入MQ系列隊列。實際的MQ Series連接/隊列詳細信息存儲在應用程序服務器上的MQ Series .bindings文件中。我從來沒有真正瞭解綁定文件,以及所有條目的含義。任何人都可以提供指導理解這個文件?瞭解MQ系列綁定文件

回答

35

在尋址.bindings文件之前,我們需要退後一步,看看JNDI --Java命名和目錄接口 - 以及它如何被JMS使用。隊列,主題和各種類型的連接工廠都是具有方法和屬性的運行時JMS對象。但是您可以預先定義它們並將它們存儲在JMS應用程序可以使用JNDI查找檢索它們的註冊表中。

這很有幫助,因爲對象就像硬幣一樣,它們有一個JMS端和一個提供者特定端。在JMS方面,任何管理對象看起來都差不多。無論底層傳輸提供者如何,ConnectionFactory都具有相同的方法和屬性。但是,在提供商特定方面,被管理對象從一個運輸提供商到另一個運輸提供商看起來非常不同。例如,與WebSphere MQ傳輸一起使用的ConnectionFactory將具有隊列管理器的屬性。沒有其他傳輸提供者具有「隊列管理器」,因此此屬性僅在WMQ上下文中有效。

管理對象的兩個方面是允許JMS獨立於傳輸提供者工作的「粘合劑」。在你的代碼中,你只需要查找一個ConnectionFactory並獲得一個適合執行方法調用的對象。在封面之下,提供者的JMS類使用提供者特定的對象屬性來提供上下文,以將通用JMS API調用轉換爲提供者特定的調用。因此,您實例化的連接對象會導致WMQ CONNECT調用,該調用指定QMgr名稱,主機,端口,通道和各種其他參數。

好的,我答應去.bindings文件。我之前說過,JNDI查找是針對「註冊表」的,通常意味着LDAP或類似的查詢。但是,Sun像JMS那樣設計了JNDI,因爲有一個您的程序使用的API和一個由註冊表使用的SPI或服務提供者接口。所以,雖然JNDI 可以在LDAP中實現,但沒有什麼說必須在LDAP中實現。 Sun提供的基本實現之一就是使用本地文件系統作爲註冊表。在這個實現中,根上下文是一個文件夾。每個上下文可以存儲另一個子上下文(另一個文件夾)或對象定義。通常,根環境有一個文件夾,所有對象都在該級別定義。包含對象定義的文件是......您猜對了...... .bindings文件。

.bindings文件中的對象以名稱/類型/值三元組表示。所以每個.bindings文件通常都有很多對象。每個對象都有很多屬性。每個屬性都有一個名稱,一個值和保存該值的變量類型。處理.bindings文件的最好方法是對其進行排序,將所有對象及其屬性放在一起並使其更易於閱讀。有關可能屬性的列表,請參見the manual

當然,.bindings文件應該是一個已編譯的工件,而不是人類可讀的。 IBM提供了JMSAdmin工具來生成和讀取.bindings文件。您還可以使用WMQ資源管理器來管理.bindings文件中的管理對象。這些也在上面鏈接的手冊中討論。在developerWorks here中還有一篇(某些說)好教程。