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程序里怎么才能获得这个消息呢?
...全文
111 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
万物皆字节 2013-04-15
  • 打赏
  • 举报
回复
其实有一个框架叫pushlet,能够实现服务端向前台推送数据,这个框架有优势也有缺点,大家可以试试。
万物皆字节 2013-04-05
  • 打赏
  • 举报
回复
客户端?你的意思是浏览器?
  • 打赏
  • 举报
回复
那要看你怎么用了。。。能实现自己的功能就行了。不一定非得用这种东西。 主要是web的客户端不能接受服务端的东西。除非你用applet
万物皆字节 2013-04-05
  • 打赏
  • 举报
回复
这样?我还不如直接在消息发送的客户端那里就将值保存,为什么还要到MDB里面去保存呢?如果真是这样处理,那显得MDB真的很没用处!
  • 打赏
  • 举报
回复
你这个把它保存起来(例子是输出)。然后网页来询问。有值的话就返回。
万物皆字节 2013-04-05
  • 打赏
  • 举报
回复
怎么取,我就是要问这个方法呀;在网上找了很多的资料,他们在MDB中做的处理都是将获得的消息打印出来,我在想在实际的开发中这样做的概率太小了!!!
  • 打赏
  • 举报
回复
这个你的客户端定时来取消息吧。不然就不能主动往客户端发送消息。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧