`

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

    博客分类:
  • J2EE
阅读更多
前面已经介绍过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!");
	}

}
0
1
分享到:
评论

相关推荐

    JavaEE5学习笔记06-EJB之消息驱动Bean总结

    ### Java EE 5 学习笔记06:EJB之消息驱动Bean总结 #### EJB 消息驱动 Bean (Message Driven Bean, MDB) 在Java EE 5中,消息驱动Bean(MDB)是一种特殊的EJB组件,它主要用于处理异步消息。MDB能够接收并处理由...

    EJB消息驱动bean Demo

    EJB(Enterprise JavaBeans)..."EJB消息驱动bean Demo"为你提供了一个实际操作的例子,通过它你可以学习如何设置和使用MDB,以及如何利用JMS进行通信。理解并熟练掌握这些概念对于开发企业级的Java应用程序至关重要。

    ejb3.0第11讲 --开发消息驱动bean

    4. **部署MDB**:将MDB类打包到EJB模块(.ear或.ejb-jar文件)中,并在部署描述符(如 ejb-jar.xml 或 META-INF/ejb-jar.xml)中声明它。有时,激活规范也可以在这里配置。 5. **使用JMS API**:在onMessage()方法...

    EJB2和EJB3 消息驱动bean

    **理解消息驱动Bean(MDB)** 消息驱动Bean是Java EE中用于处理异步消息的一种特殊类型的EJB。在EJB2中,MDB主要用于接收来自消息队列或主题的消息,处理后可进一步触发业务逻辑或其他操作。 ##### 2. **创建queue...

    ejb2.0消息驱动bean的开发(JBOSS4.0.4.GA 环境)

    通过这个主题,开发者可以学习到如何在旧版Java EE环境中利用消息驱动Bean进行异步处理,这对于理解更高级的Java EE技术,如EJB3.0和微服务架构,有着重要的基础作用。同时,这也是一种宝贵的技能,因为许多遗留系统...

    MDB 消息驱动Bean

    虽然MDB负责处理消息,但是由运行MDB的EJB容器负责处理服务(事务、安全、资源、并发、消息确认,等等),使bean开发者把精力集中在处理消息的业务逻辑上。传统的JMS应用程序必须定制地编写一部分这些服务。MDB在...

    ejb 消息驱动Bean例子

    消息驱动Bean(Message Driven Bean,MDB)是EJB的一种特殊类型,它专注于处理消息队列(Queue)或主题(Topic)中的消息,实现异步处理。在本例中,我们将探讨如何使用EJB消息驱动Bean处理Queue和Topic。 1. **...

    EJB MDB JNDI配置信息

    在Java企业级应用开发中,EJB(Message Driven Bean, MDB)是用于处理异步消息传递的关键技术之一。而Java Naming and Directory Interface (JNDI)则是Java平台提供的一种标准接口,用于查找并获取应用程序所需的资源...

    消息驱动bean EJB 3.0

    **消息驱动Bean (Message Driven Bean, MDB) 是企业级JavaBeans (Enterprise JavaBeans, EJB) 3.0 规范中引入的一种组件模型,主要用于处理异步消息通信。在分布式应用程序中,MDB 提供了一种高效且解耦的方式来处理...

    JBOSS 4.0.5 EJB3.0之MDB (ACTIVEMQ)

    3. **部署描述符**:在`ejb-jar.xml`或`META-INF/ejb-jar.xml`中配置MDB,包括消息类型(JMS queue或topic)、消息驱动适配器等。 4. **RA(Resource Adapter)配置**:`ra.xml`文件是资源适配器的配置文件,用于...

    ejb-3_0-fr-spec-ejbcore.rar_ejb 3.0

    7. **消息驱动bean(Message-Driven Beans, MDB)**:EJB 3.0中的MDB简化了处理JMS(Java Message Service)消息的过程,使得异步处理变得更加容易。 8. **可移植性**:由于EJB 3.0是Java EE标准的一部分,因此编写...

    精通EJB(3th-en)

    ### 精通EJB(第三版)核心...本书通过丰富的示例和详尽的技术解释,帮助读者从理论到实践全面掌握EJB技术的核心要点,无论是对于学习EJB基础知识,还是进行具体的EJB组件开发,亦或是探索高级主题都有着重要的指导意义。

    ejb3.0非常实用教程

    #### 五、消息驱动Bean (Message-Driven Bean) 1. **基本概念** - 定义MDB用于处理来自JMS的消息。 2. **开发流程** - 创建MDB项目。 - 配置JMS队列/主题。 3. **部署与测试** - 部署MDB到JBoss AS。 - 发送...

    javax.ejb-3.1.2.2.jar下载

    3. **消息驱动bean(Message-Driven Beans,MDB)**:专门用于处理JMS(Java Message Service)消息,它们在后台监听消息队列,并在接收到消息时执行相应的业务逻辑。 `javax.ejb`包包含了这些EJB组件的关键接口和...

    EJB学习PPT(上)

    - **消息驱动bean(Message-Driven Beans,MDB)**:主要用于处理JMS(Java Message Service)消息,实现异步处理。 3. **EJB生命周期**:EJB组件经历创建、初始化、激活、被动使用、钝化和销毁等阶段。这些阶段由...

    mdb.rar_EJB3.0_ejb3.0 example

    这些资源通常在应用服务器的部署描述符(如WEB-INF/ejb-jar.xml或META-INF/ejb-jar.xml)中配置,但在EJB 3.0中,也可以通过注解完成。 3. **JNDI查找**:MDB可能需要查找其他JNDI资源,如JMS连接工厂,以便建立与...

    EJB3最新学习教程,适合初学者

    2. **消息驱动Bean (MDB):**用于处理JMS消息,实现消息驱动的业务逻辑。 3. **实体Bean:**用于持久化数据,但在EJB3中,实体Bean已被JPA(Java Persistence API)取代。 #### 三、EJB3 开发环境搭建 1. **安装...

    ejb-3_0-pr-spec-persistence

    2. **消息驱动Bean(MDB)的简化**:MDB用于处理异步消息,EJB 3.0简化了MDB的配置,引入了注解,使得MDB的定义更加直观易懂。 3. **增强的安全性和事务管理**:EJB 3.0提供了更强大的安全性和事务管理功能,包括细...

    javax.ejb-3.1.2.2_with-source.zip

    3. **消息驱动Bean(Message Driven Beans,MDB)**:主要用于处理JMS(Java Message Service)消息,是异步处理的典型代表,可以解耦发送和接收消息的组件。 4. **实体Bean(Entity Beans)**:用于持久化数据,...

    基于Java的实例源码-各种EJB之间的调用示例.zip

    - 消息驱动bean(Message-driven Beans, MDB):用于处理消息队列中的消息,常用于异步处理。 - 实体bean(Entity Beans):映射到数据库中的持久化对象,分为Bean管理的持久性(BMP)和容器管理的持久性(CMP)。...

Global site tag (gtag.js) - Google Analytics