3

我正在一个新项目中工作。该项目包括使用 websphere MQ、Websphere 服务器。我们在 Websphere MQ 中有队列,包括队列管理器。我们还在 websphere 应用服务器中定义了队列和连接工厂。现在,我的问题是为什么我们需要在 websphere 应用程序服务器中创建队列和连接工厂,即使它们是在 WEBSPHERE MQ 中定义的。我们的应用程序不能直接使用 Websphere MQ 中定义的队列吗?

请清除我的查询。提前谢谢你。

4

1 回答 1

3

实际上,连接工厂并没有在 WebSphere MQ 中定义。队列是,但它与您在 WAS 中创建的不同。

使用 JMS 时,对象有两个接口。JMS API 是代码和开发人员看到的接口。服务提供者接口是与特定 JMS 传输提供者交互的部分。需要这两者来创建 JMS 对象,例如 QCF 或 Destination。

当您在 WAS(或任何 JNDI 存储库,就此而言)创建对象定义时,创建的是程序可以引用的对象(JMS API 部分),但它也“知道”如何与特定的传输提供者对话以及(SPI部分)。因此,当您在 WAS 中定义队列时,它是一个目录条目,指向在传输提供者(在本例中为 WebSphere MQ)中定义的实际物理队列。类似地,当您定义连接工厂时,它也不过是一个符合 JMS API 的目录条目,并且还“知道”如何使用其专有协议和有线格式与传输提供者对话。在这种情况下,因为传输提供者是 WebSphere MQ,所以连接工厂目录条目必须知道 QMgr 名称、主机、端口、通道、SSL/TLS 详细信息等。

在某些情况下,应用服务器传输提供者(即,使用服务集成总线作为 JMS 传输的 WAS)创建 JMS 对象定义同时创建物理对象。

反之亦然。在 WebSphere MQ 中,当您使用 WebSphere MQ Explorer 创建队列或主题时,您有机会定义 JMS 对象定义,前提是您已将 WMQ Explorer 配置为与存储托管对象的存储库通信。例如,您可以使用 LDAP 来存储托管对象定义,将 WebSphere MQ Explorer 和 WAS 都指向 LDAP 目录并管理那里的所有 JMS 对象。

所以重申一下,在 WAS 中定义 JMS 对象只会创建目录条目,而不是实际的 WMQ 对象。这适用于您与 WAS 一起使用的任何外部 JMS 传输。

于 2012-10-30T03:54:47.410 回答