2011-10-04 19 views
0

我試圖從消息代理創建的條形文件中讀取屬性值。使用java api從消息代理欄文件中檢索屬性值

我想通過java來做到這一點。該API是在這裏:http://publib.boulder.ibm.com/infocenter/wmbhelp/v7r0m0/index.jsp?topic=%2Fcom.ibm.etools.mft.doc%2Fbe43410_.htm

但是,我只能弄清楚如何通過使用部署描述符獲取屬性NOT THEIR VALUES的名稱。我可以看到如何覆蓋一個屬性的值,但再一次,而不是如何檢索值。換句話說,我只能看到如何寫入屬性而不能讀取它。我想做兩個!叫我貪心;)

如果我使用基於命令行的實用程序:http://publib.boulder.ibm.com/infocenter/wmbhelp/v7r0m0/index.jsp?topic=%2Fcom.ibm.etools.mft.doc%2Faf03900_.htm 我可以得到屬性值沒有問題。

但我想通過java獲得它們,如果可能的話。

在此先感謝您的幫助!

回答

0

問題是我誤解了部署描述符是如何工作的。我認爲,當java API引用重寫的屬性時,它意味着那些在我的java代碼中過度使用的屬性。但它實際上是指所有在條形文件中具有值的屬性。

這就是說獲得價值並不是海峽前進。你必須得到所有的標識符,然後將它們傳遞給getOverride();

BarFile b = BarFile.loadBarFile("C:\\BarParamTest\\myBar.bar"); 
DeploymentDescriptor d = b.getDeploymentDescriptor(); 

Enumeration<String> properties = d.getPropertyIdentifiers(); 

while(properties.hasMoreElements()) 
{ 
    String p = properties.nextElement(); 
    System.out.println(p + " = " + d.getOverride(p)); 
} 

或者使用下面的方法具有值

Enumeration<String> properties = d.getOverriddenPropertyIdentifiers(); 
0

出於某種原因,設置不寫入文件,如果他們沒有覆蓋或沒有改變。只列出屬性(其原因是缺乏必須保持屬性的默認值:)),所以獲取屬性的方式是知道它們的默認值。但我會建議你使用com.ibm.mq.jar庫,如果你能夠連接到經紀商的使用方法

java.util.Properties MessageFlowProxy.Node.getProperties() 

從已部署的.bar讀取性能。