如何在WAS上使用来自Java应用程序的IIB MQ队列的WAS JMS资源(使用JNDI)

时间:2016-08-14 01:21:09

标签: java websphere jndi mq

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

具体我希望JAVA代码:

  • 在IBM WebSphere Application Server网络部署(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使用哪个初始上下文,以及在哪里找到提供者。)

感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

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

你必须得到

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

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

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

d)创建消息生成器

e)创建队列会话,短信并直接发送消息

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

基本上是后配置,它是很多Boilerplate JMS编码

答案 1 :(得分:0)

这对你没什么帮助。 在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();
}