MDB是通过JMS消息驱动的,当消息队列中有消息时,将会引发MDB的onMessage方法调用,而这些JMS消息可能来自于各种消息生产者,比如POJO、其他消息中间件、EJB等,本实例使用无状态会话Bean发送JMS消息。
本实例的平台为:netbeans6.7.1 + jdk1.6 + Glassfish2.1 + JSF1.2
实现流程是:通过将jsp页面表单中输入的文本消息,发送给JSF后台受管BEAN,受管BEAN再以文本消息作为参数调用会话Bean,会话Bean将文本消息打包成TextMessage发送到消息队列(消息目的地)当中。消息队列再驱动MDB对消息进行处理,并打印处理。
jsp页面:
受管BEAN:
无状态会话Bean:
@Resource(name = "jms/MyQueue")
private Queue myQueue;
是注入的JMS目标资源
@Resource(name = "jms/MyQueueFactory")
private ConnectionFactory myQueueFactory;
是注入的JMS连接工厂
这两个资源应该保证已经在Glassfish中已经存在,没有的话,请登陆控制台,进行添加。当然在NETBEANS中可以右键源代码行,选择【插入代码】,然后选择【发送JMS消息】,在出现的对话框窗口中进行添加。
无状态会话Bean接口:
消息驱动Bean:
mappedName = "jms/MyQueue"
指定JMS目标资源(消息队列)