读书人

EJB学习之5-MDB(消息驱动EJB)

发布时间: 2012-10-23 12:12:22 作者: rapoo

EJB学习之五---MDB(消息驱动EJB)
前面已经介绍过EJB的Session Bean,这篇文章主要介绍EJb的消息驱动bean---MDB.
Key
消息驱动Bean定义
发布消息方式
实现MDB
Sample

一 消息驱动Bean定义

二 发布消息方式
1. P2P(Point to Point)

2. Pub-Sub(Publish/Subcrib)

三 实现MDB

四 Sample:
1. P2P的MDB
1) 消息驱动EJB:QueueMdbBean

 import javax.ejb.ActivationConfigProperty;import javax.ejb.MessageDriven;import javax.jms.Message;import javax.jms.MessageListener;import javax.jms.TextMessage;/** * @author Jamson Huang * */@MessageDriven(activationConfig={@ActivationConfigProperty(propertyName="destinationType",propertyValue="javax.jms.Queue"),@ActivationConfigProperty(propertyName="destination",propertyValue="queue/QueueMdb")})/*P2P*/public class QueueMdbBean implements MessageListener {/* (non-Javadoc) * @see javax.jms.MessageListener#onMessage(javax.jms.Message) */public void onMessage(Message msg) {   try{   TextMessage txtMsg = (TextMessage)msg;   System.out.println("Queue Text:"+ txtMsg.getText());   }catch(Exception ex){   ex.printStackTrace();   }}}

2)MDB client:

import javax.jms.Queue;import javax.jms.QueueConnection;import javax.jms.QueueConnectionFactory;import javax.jms.QueueSender;import javax.jms.QueueSession;import javax.jms.TextMessage;import javax.naming.InitialContext;/** * @author Jamson Huang * */public class QueueMdbEjbBeanClient {/** * @param args */public static void main(String[] args) throws Exception {InitialContext context = new InitialContext();QueueConnectionFactory factory = (QueueConnectionFactory)context.lookup("ConnectionFactory");QueueConnection conn = factory.createQueueConnection();QueueSession session = conn.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);Queue queue = (Queue)context.lookup("queue/QueueMdb");TextMessage txtMsg = session.createTextMessage("Hello world, Jamson");QueueSender sender = session.createSender(queue);sender.send(txtMsg);System.out.println(txtMsg.getText());session.close();conn.close();System.out.println("queue has been sent!");}}}


2. PUB/SUB的MDB
1) 消息驱动EJB:TopicMdbBean
import javax.ejb.ActivationConfigProperty;import javax.ejb.MessageDriven;import javax.jms.Message;import javax.jms.MessageListener;import javax.jms.TextMessage;/** * @author Jamson Huang * */@MessageDriven(activationConfig={@ActivationConfigProperty(propertyName="destinationType",propertyValue="javax.jms.Topic"),@ActivationConfigProperty(propertyName="destination",propertyValue="topic/TopicMdb")})public class TopicMdbBean implements MessageListener {/* (non-Javadoc) * @see javax.jms.MessageListener#onMessage(javax.jms.Message) */public void onMessage(Message msg) {// TODO Auto-generated method stub   try{   TextMessage txtMsg = (TextMessage)msg;   System.out.println("Queue Text:"+ txtMsg.getText());   }catch(Exception ex){   ex.printStackTrace();   }}}

2)MDB client:
import javax.jms.TextMessage;import javax.jms.Topic;import javax.jms.TopicConnection;import javax.jms.TopicConnectionFactory;import javax.jms.TopicPublisher;import javax.jms.TopicSession;import javax.naming.InitialContext;/** * @author Jamson Huang * */public class TopicMdbEjbBeanClient {/** * @param args */public static void main(String[] args) throws Exception {InitialContext context = new InitialContext();TopicConnectionFactory factory = (TopicConnectionFactory)context.lookup("ConnectionFactory");TopicConnection conn = factory.createTopicConnection();TopicSession session = conn.createTopicSession(false, TopicSession.AUTO_ACKNOWLEDGE);Topic topic = (Topic)context.lookup("topic/TopicMdb");TextMessage txtMsg = session.createTextMessage("Hello world, Jamson");TopicPublisher publisher = session.createPublisher(topic);publisher.send(txtMsg);System.out.println(txtMsg.getText());session.close();conn.close();System.out.println("Topic has been sent!");}}

读书人网 >其他数据库

热点推荐