【问题标题】:How to lookup remote JNDI如何查找远程 JNDI
【发布时间】:2013-02-22 17:26:30
【问题描述】:

是否可以在 IBM MQ 中查找远程 JNDI。我的场景是我在机器 A 上安装了 MQ,带有 JNDI 资源(MQ Explorer 中的 JMS 管理对象)。现在,如果我想从独立的 JAVA 类通过 JMS 连接到 MQ,我可以从“file://JNDI_FACTORY”中查找.所有的例子都只提到了这一点。但是,如果我想要机器 B 上的独立 JAVA 类,是否有可能?即机器 B 有 JAVA 类,它必须连接到远程 JNDI(在机器 A 上)并查找连接工厂。我可以在机器 B 的 java 类中对属性 ContextProviderUrl 使用“A:port 的主机名”之类的东西来从机器 A 访问远程对象吗?

还建议我进行远程 JNDI 查找。

请帮忙!

感谢查克里

【问题讨论】:

    标签: java jms jndi ibm-mq mq


    【解决方案1】:

    为简单起见,所有 MQ JMS 示例都使用文件 JNDI 来演示初始上下文的用法。您可以修改示例以查找 LDAP 服务器以获取连接工厂和目标信息。

    首先在 MQExplorer 中,您需要选择 LDAP Server 选项以将连接工厂和目标信息保存到 LDAP 服务器。然后在您的应用程序中,您需要有如下代码:

      String initialContextUrl = "ldap://myhost:991/c=uk,o=ACME"
      String contextFactory = "com.sun.jndi.ldap.LdapCtxFactory";
      Hashtable environment = new Hashtable();
      environment.put(Context.INITIAL_CONTEXT_FACTORY, contextFactory);
      environment.put(Context.PROVIDER_URL, initialContextUrl);
      Context context = new InitialDirContext(environment);
    

    有关详细信息和其他代码示例,请参阅信息中心主题 Using JNDI to retrieve administered objects in a JMS application。

    【讨论】:

    • 是的,T.Rob。这是我在 etc/hosts 文件中的 SO 条目的问题。我删除了条目,我回来了。
    • 还有一件事是,我使用 MQexplorer 来处理队列管理器,当我使用 JMS 和 JNDI 查找连接到 MQ 时,使用 qcf.createQueueConnection();我收到“JMSWMQ2013:为 QueueManager 提供的安全身份验证无效”错误,所有帖子/博客都提到了这个错误,但他们说要删除 queuemanager 的 CHAUTH 等等......我该如何解决这个问题MQExplorer,请帮助我
    • 不建议实际禁用 CHLAUTH,因为这样做会使您的队列管理器向世界开放。如果这是一个测试队列管理器就可以了。使用 runmqsc 您可以禁用通道身份验证。在 runmqsc 发出“ALTER QMGR CHLAUTH(DISABLED)”命令来禁用通道认证。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 2015-02-01
    • 2012-03-20
    • 2017-11-09
    相关资源
    最近更新 更多