`

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
分享到:
评论

相关推荐

    MDB 消息驱动Bean

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

    EJB MDB JNDI配置信息

    EJB MDB JNDI配置信息(包含Jboss,WebLogice..)

    EJB-MDB:ejbs MDB 学习练习

    设置环境下载解开 glassfish 的拉链编辑 build.properties 文件指向 glassfish 所在的文件夹运行应用程序打开一个终端...glassfish 终端中,应显示消息: |MESSAGE BEAN: Message received: IS-Expert|参考 MDB的.html

    EJB 3.0消息驱动Bean(p-to-p and Topic)

    许多初学者拜求的EJB知识点: @MessageDriven( activationConfig ={ @ActivationConfigProperty(propertyName="destinationType",propertyValue="javax.jms.Topic"), @ActivationConfigProperty(property...

    mdb.rar_EJB3.0_ejb3.0 example

    example mdb EJB3.0

    EJB3 PPT教程

    自己总结的EJB3上课教案,包括SessionBean、EntityBean、MDB、O/R映射与继承映射、持久化实体管理器、EJB3-QL、JTA等的教案.

    JBOSS 4.0.5 EJB3.0之MDB (ACTIVEMQ)

    NULL 博文链接:https://seanwon.iteye.com/blog/721230

    EJB详解 sessionbean entitybean MDB

    主要提供声明周期管理、代码产生、持续性管理、安全、事务管理、锁和并发行管理等服务

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    8.4.1 打包EJB-JAR 315 8.4.2 Annotation与部署描述文件 315 8.5 开发有状态的Session Bean 318 8.6 Session Bean的生命周期 321 8.6.1 无状态Session Bean的生命周期 321 8.6.2 有状态Session Bean的生命周期 322 ...

    湘潭大学j2ee课程设计(基于webservice+ejb3.0+mdb+hibernate实现登录验证模块)

    这是我做的j2ee课程设计项目,基于web service,ejb3.0,mdb,hibernate的集成实现了登录验证模块。里面有详细的步骤说明,除了环境(myeclipse,jboss5.0,mysql)需要自己配置之外,其他的资源都有。 希望可以帮助到...

    解析J2EE1.4新特性(4)-EJB2.1的新特性

    在支持Web服务的同时,EJB2.1也改进了EJB-QL以及消息驱动bean(MDB)的编程模型。该编程模型目前已经扩展至Java消息服务之上以支持任何一种消息系统。另外,新标准也推出了一种新的计时器服务,使得开发人员可以设计...

    EJB3.0 PPT

    详细介绍EJB中的实体Bean 及消息驱动Bean.具体内容有什么是实体/消息驱动Bean,各自特点,何时使用.生命周期,回调方法.及各自有简单示例.

    WSAD环境下JMS异步通信全攻略

     为了支持异步通信,J2EE 1.3规范还引入了一种新的EJB类型:消息驱动的Bean,即Message Driven Bean,简称MDB。如前所述,在JMS之前,J2EE原来是一个建立在Java RMI-IIOP通信协议基础上的同步环境,但MDB却具有接收...

    JBOSS使用指南

    1.3 消息驱动Bean(MDB): 2.会话Bean(Session Bean) 2.1因为客户端需要通过JNDI查找EJB,那么JNDI 是什么 2.2 Stateless Session Beans(无状态bean)开发 2.3 Stateless Session Bean与Stateful Session Bean的区三...

    Java/JavaEE 学习笔记

    第五章 消息驱动Bean(MDB).........327 EJB3.0.....329 第一章 EJB3.0 Foundation...............329 第二章 Session Bean........................330 第三章 消息驱动Bean(MDB).........332 第四章 JPA(Java ...

    企业分布式计算实验报告

    企业分布式计算的实验报告,主要是ejb中的消息驱动Bean(MDB)

    J2EE学习笔记(J2ee初学者必备手册)

    第五章 消息驱动Bean(MDB).........327 EJB3.0.....329 第一章 EJB3.0 Foundation...............329 第二章 Session Bean........................330 第三章 消息驱动Bean(MDB).........332 第四章 JPA(Java ...

    浅析WebLogic服务器上异步消息的接收

    消息驱动Bean(MDB)是设计用来专门处理基于消息请求的组件,文章在简单介绍WebLogic的基础上重点从4个方面讨论了消息驱动Bean。

Global site tag (gtag.js) - Google Analytics