【问题标题】:How to use WAS JMS resourses for IIB MQ Queue from a Java Application on WAS (using JNDI)如何从 WAS 上的 Java 应用程序将 WAS JMS 资源用于 IIB MQ 队列(使用 JNDI)
【发布时间】:2016-12-20 16:09:52
【问题描述】:

我是 MQ 和 JNDI 的新手,我正在寻找一些简单的示例 Java 代码来解析我的 WAS JMS 配置并且可以写入和读取两个消息队列。

具体来说,我希望 JAVA 代码:

  • 在 IBM WebSphere Application Server Network Deployment (WAS ND 8.5.5) 上运行代码
  • 写入和读取外部系统上的 2 个 IBM Integration Bus (IIB) 消息队列

  • 在 WAS 中我配置 JMS 资源如下:

    • 对于连接工厂 - 给它一个 JNDI 名称“jms/MQCONN.FACTORY”
    • 对于队列 #1 - 给它一个 JNDI 名称“jms/MQUEUE1.DEST”
    • 对于队列 #2 - 给出的 JNDI 名称为“jms/MQUEUE2.DEST”

我设置了 JAAS - J2C 身份验证数据凭证。

注意:我无法为连接工厂测试到 MQ 的连接,因为安全设置是在向导完成后添加的,您只能通过向导进行测试。我相信 WAS 配置是正确的,包括凭据。

我特别不明白如何编写 JNDI 部分(即如何存储环境变量,告诉 JNDI 使用哪个初始上下文,以及在哪里可以找到提供者。)

感谢您的帮助!

【问题讨论】:

  • 据我所知,没有 IIB 消息队列这样的东西。您是指 IBM MQ 队列吗? IIB 可以与 MQ 的队列交互,但它本身没有队列。

标签: java websphere jndi mq


【解决方案1】:

Sibyl,一旦您配置了这些托管对象 (QueueConnectionFactory.Queue),您应该能够从可以部署在应用程序服务器上的代码中查找这些对象。

你必须得到

a) InitialContext(在服务器上部署ear时,可以使用默认构造函数)

b) 查找队列连接工厂(context.lookup(xxx))

c) 查找队列 (context.lookup(yyyy))

d) 创建消息生产者

e) 创建一个 Queue Session , 短信并直接发送消息

您可以在这里获得更多想法 (http://www.webspheretools.com/sites/webspheretools.nsf/docs/Creating%20a%20Queue%20Connection%20Factory%20and%20Queue%20for%20connectivity%20to%20MQ)

基本上后期配置是很多样板JMS编码

【讨论】:

    【解决方案2】:

    这里对你的帮助不大。 在 WAS 中创建资源后,您无需提供额外的配置。

    Queue myQueue;
    QueueConnectionFactory myQueueFactory;
    QueueConnection connection = null;
    QueueSession session = null;
    
    try{
        InitialContext jndi = new InitialContext();
        myQueueFactory = (QueueConnectionFactory) jndi.lookup("jms/MQCONN.FACTORY");
        myQueue = (Queue) jndi.lookup("jms/MQUEUE1.DEST");
    
        connection=myQueueFactory.createQueueConnection();
    
        session = connection.createQueueSession(true, Session.AUTO_ACKNOWLEDGE);
    
        QueueSender sender = session.createSender(myQueue);
        connection.start();
        TextMessage textMessage = session.createTextMessage(event);
        textMessage.setStringProperty("messageType", "file");
        sender.send(textMessage);
    
        sender.close();
    
        if (session != null) {
            session.close();
        }
    
        if (connection != null) {
            connection.close();
        }
    } catch (JMSException e) {
        e.printStackTrace();
    }
    

    【讨论】:

      猜你喜欢
      • 2017-02-20
      • 2017-04-14
      • 2017-09-18
      • 2017-05-25
      • 1970-01-01
      • 1970-01-01
      • 2019-05-15
      • 2018-09-28
      • 1970-01-01
      相关资源
      最近更新 更多