web应用怎么获得消息驱动bean收到的消息,迷惑中。。
万物皆字节 2013-04-04 05:05:39 这几天在研究ejb的消息驱动bean,我的总结是:
1、注册消息服务,这个用service.xml结尾的文件部署到jboss中
<?xml version="1.0" encoding="UTF-8"?>
<server>
<mbean code="org.jboss.mq.server.jmx.Queue" name="jboss.org.destination:server=Queue,name=myqueue" >
<attribute name="JNDIName" >queue/myqueue</attribute>
<depends optional-attribute-name = "DestinationManager" >jboss.mq:service=DestinationManager</depends>
</mbean>
<mbean code="org.jboss.mq.server.jmx.Topic" name="jboss.org.destination:server=Topic,name=mytopic" >
<attribute name="JNDIName" >topic/mytopic</attribute>
<depends optional-attribute-name = "DestinationManager" >jboss.mq:service=DestinationManager</depends>
</mbean>
</server>
2、写一个发送信息的客户端类,我这样写的
public class MSGSender {
public static void SendMsg(String msg) {
try {
InitialContext context = new InitialContext();// 初始化一个jndi上下文信使,会直读取jndi.peoperties文件
/*
* 通过QueueConnectionFactory的全局jndi名称获得其对象
*/
QueueConnectionFactory factory=(QueueConnectionFactory)context.lookup("QueueConnectionFactory");
/*
* 获得工厂的一个连接
*/
QueueConnection con=factory.createQueueConnection();
/*
* 获得会话:第一个参数表面会话不需要事务,第二个表示消息介绍的模式
*/
QueueSession session=con.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
/*
* 查找目标地址的jndi名称
*/
Destination destnation=(Destination)context.lookup("topic/mytopic");
/*
* 根据会话和目标地址,生成消息的生产者即消息的发送者
*/
MessageProducer Producer=session.createProducer(destnation);
/*
* 发送信息
*/
Producer.send(session.createTextMessage(msg));
/*
* 关闭连接
*/
session.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
3、对于第三步我就迷惑了,为什么在网上找的例子都是将DMB获得的消息打印在控制台上?我的web项目里想用到这个消息又该怎么写?大概的功能就类似于上线提醒,但这个打印在控制台绝对不是我要的代码。
有没有人对这方面了解的,给小弟一点帮助,web程序里怎么才能获得这个消息呢?