我是MQ和JNDI的新手,我正在寻找一些简单的示例Java代码来解析我的WAS JMS配置,并且可以写入和读取两个消息队列。
具体我希望JAVA代码:
在外部系统上写入2个IBM Integration Bus(IIB)消息队列并从中读取
在WAS中,我按如下方式配置了JMS资源:
我设置了JAAS - J2C身份验证数据凭据。
注意:我无法测试连接工厂的MQ连接,因为在向导完成后添加了安全设置,您只能从向导进行测试。我相信WAS配置是正确的,包括凭证。
我特别不明白如何编写JNDI部分(即如何存储环境变量,告诉JNDI使用哪个初始上下文,以及在哪里找到提供者。)
感谢任何帮助!
答案 0 :(得分:0)
Sibyl,一旦配置了这些托管对象(QueueConnectionFactory.Queue),您应该能够从可以在应用程序服务器上部署的代码中查找这些对象。
你必须得到
a)InitialContext(在服务器上部署ear时,可以使用默认构造函数)
b)查找队列连接工厂(context.lookup(xxx))
c)查找队列(context.lookup(yyyy))
d)创建消息生成器
e)创建队列会话,短信并直接发送消息
基本上是后配置,它是很多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();
}