【问题标题】:JMS connection to a remote MQ with bindingsJMS 通过绑定连接到远程 MQ
【发布时间】:2015-12-26 05:54:26
【问题描述】:

我想使用绑定文件配置 Java 应用程序以使用 JMS IBM MQ 队列。 我正在使用 IBM 提供的 JMSDEMO 应用程序。 它适用于本地 MQ 管理器,但我无法使其连接到远程管理器。 我已经在远程机器上生成了绑定文件并将其复制到我的机器上。

我已将绑定文件中的“localhost”更改为远程机器名称。 但是,该应用程序仍然认为它应该连接到本地 QM。 (实际上它忽略了主机名设置)。

这是 IBM 演示代码:

public static final String     cfLookup    = "JMSDEMOCF";
public static final String     JNDITopic   = "JMSDEMOTopic";
public static final String     JNDIQueue   = "JMSDEMOQueue";
public static final String     icf     ="com.sun.jndi.fscontext.RefFSContextFactory";

........

static              String     url         = "file:C:\\JMSDEMO\\JNDI";

.......

  Hashtable environment = new Hashtable();
  environment.put(Context.INITIAL_CONTEXT_FACTORY, icf);
  environment.put(Context.PROVIDER_URL, url);
  ctx = new InitialDirContext( environment );


  connFactory = (ConnectionFactory)ctx.lookup( cfLookup );


  connection = connFactory.createConnection();
  connection.start();

这是绑定文件的一些片段(JMSDEMOCF 是连接工厂的名称)

JMSDEMOCF/RefAddr/3/Content=<the remote machine name or IP; both ignored>
JMSDEMOCF/RefAddr/29/Content=<the remote machine name or IP; both ignored>(the remote port)

它还有下面一行:

JMSDEMOCF/RefAddr/116/Type=XMSC_WMQ_LOCAL_ADDRESS

但删除它不会改变任何事情。

【问题讨论】:

    标签: java jms ibm-mq


    【解决方案1】:

    使用 MQ Explorer 在您的“绑定文件”中创建一个新的连接工厂(为什么要手动编辑该文件?),并在这个新的连接工厂上将传输选项指定为 MQ 客户端(默认为绑定,这是本地连接模式)。 在 Connection 选项卡上指定 QM 的地址,在 Channels 选项卡上指定用于连接到 QM 的服务器连接通道。

    从远程主机连接时,在您的应用程序中使用新的连接工厂。您可能需要在类路径中包含一些额外的 MQ JAR。

    【讨论】:

    • 谢谢!起初,我将 Transport 选项指定为 MQ Bind。现在可以了。
    猜你喜欢
    • 2019-12-31
    • 1970-01-01
    • 2012-03-10
    • 1970-01-01
    • 2023-03-05
    • 2015-07-08
    • 1970-01-01
    • 2011-06-15
    • 2017-02-03
    相关资源
    最近更新 更多