我正在尝试从消息代理创建的bar文件中读取属性值。
我想通过java来实现。api在这里:http://publib.boulder.ibm.com/infocenter/wmbhelp/v7r0m0/index.jsp?topic=%2Fcom.ibm.etools.mft.doc%2Fbe43410_.htm
然而,我只能弄清楚如何通过使用部署描述符来获取属性的名称而不是他们的值。我可以看到如何重写属性所具有的值,但还是不能看到如何检索该值。换句话说,我只能看到如何写入属性而不是从中读取。我两样都想做!叫我贪婪;)
如果我使用基于命令行的实用程序:http://publib.boulder.ibm.com/infocenter/wmbhelp/v7r0m0/index.jsp?topic=%2Fcom.ibm.etools.mft.doc%2Faf03900_.htm
我可以得到属性值,没有问题。
但如果可能的话,我想通过java获得它们。
提前感谢你的帮助!
问题是我误解了部署描述符的工作方式。我认为,当java API提到覆盖的属性时,它意味着在我的java代码中被覆盖的属性。但它实际上指的是bar文件中所有有值的属性。
也就是说,获取值并不是直接向前的。您必须获得所有标识符,然后将它们传递给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();
由于某些原因,如果设置未被覆盖或未更改,则不会写入文件。(原因是没有必要保留属性的默认值:))所以获取属性的方法是知道它们的默认值。但我建议你使用com.ibm.mq.jar
库,如果你能够连接到代理读取属性使用方法
java.util.Properties MessageFlowProxy.Node.getProperties()
来自已经部署的。bar。