2009-06-08 24 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中还有一篇(某些说)好教程。