- 浏览: 696094 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (272)
- Struts1.x (7)
- 事务 (2)
- Hibernate (11)
- 数据库 (14)
- JavaScript&Ajax (43)
- JSP&Servlet (2)
- Flex (1)
- 其它 (9)
- Java (22)
- 框架集成 (1)
- WebService (3)
- Tomcat (3)
- 加密和安全登录 (13)
- 基于原型的JavaScript (0)
- JavaDoc和Java编码规范 (3)
- CAS (1)
- 加密 (1)
- Axis2 (10)
- Ext2.x (3)
- SSH整合 (2)
- Ext (0)
- 正则表达式 (1)
- 设计模式 (4)
- 对象序列化技术 (3)
- CVS (2)
- Struts2 (6)
- Spring 2.x (7)
- Spring Security (2)
- Java 课程 (20)
- 程序员之死 (1)
- 软件测试 (6)
- UML (5)
- NetBeans (1)
- cxf (1)
- JMS (13)
- 设计 (5)
- ibatis2.x (3)
- Oracle (1)
- WebSphere (7)
- 概要设计 (1)
- DB2 (10)
- PowerDesigner (0)
- 软件工程 (5)
- rose (1)
- EA (1)
- LDAP (7)
- Portal&Portlet (3)
- MQ (10)
- ESB (4)
- EJB (2)
- JBoss (2)
最新评论
-
typeRos:
只有配置文件,没有代码么大神
Spring实现IBMMQ的JMS消息发布/订阅模式 -
panamera:
如果ActiveMQ服务器没有启动,这个时候消息生产者使用Jm ...
Spring JMSTemplate 与 JMS 原生API比较 -
lian819:
顶1楼, 引用文件, 配置属性, 太方便了
EXTJS 同步和异步请求 -
wilhard:
说得清楚明白
<%@ include file=""%>与<jsp:include page=""/>区别 -
刘琛颖:
总结的很好。受益了
javascript 父窗口(父页面)— 子窗口 (子页面)互相调用的方法
EJB3.0中MessageDrivenBean:
1.java消息驱动bean属于Java消息服务(Java Message Service,简称JMS)。
2.JMS是用于访问企业消息系统的开发商中心的API。企业消息系统可以协助应用软件通过网络进行消息交互。
3.JMS的编程过程简单概括为:应用程序A-->(消息)-->Jboss JMS-->(消息)-->应用程序B。应用程序A和应用程序B没有直接的代码关联,两者实现了解耦。消息传递系统的中心就是消息。
消息驱动Bean(MDB)是设计用来专门处理基于消息请求的组件,它和无状态Session Bean一样也使用了实例池技术,容器可以使用一定数量的bean实例并发处理成百上千个JMS消息。正因为MDB具有处理大量并发消息的能力,所以非常适合应用在一些消息网关产品。如果一个业务执行的时间很长,而执行结果无需实时向用户反馈时,也很适合使用MDB。如订单成功后给用户发送一封电子邮件或发送一条短信等。
消息有下面几种类型,他们都是派生自Message接口。
StreamMessage:一种主体中包含Java基本值流的消息。其填充和读取均按顺序进行。
MapMessage:一种主体中包含一组名-值对的消息。(没有定义条目顺序)
TextMessage:一种主体中包含Java字符串的消息(例如:XML消息)
ObjectMessage:一种主体中包含序列化Java对象的消息。
BytesMessage:一种主体中包含连续字节流的消息。
消息的传递模型:
JMS支持两种消息传递模型:点对点(point-to-point,简称PTP)和发布/订阅(publish/subscribe,简称pub/sub)。
二者有以下区别:
1.PTP 消息传递模型规定了一条消息只能传递给一个接收方。采用javax.jms.Queue表示。
2.Pub/sub 消息传递模型允许一条消息传递给多个接收方。采用javax.jms.Topic表示。
注意:每种模型都通过扩展公用基类来实现。例如,javax.jms.Queue 和javax.jms.Topic都扩展自javax.jms.Destination 类。
开发步骤如下:
一、配置destinations-service.xml文件。
JBOSS使用一个XML文件配置队列地址,文件的取名格式应遵循*-service.xml,我取名为destinations-service.xml。
jboss默认的全局JNDI名称组成为:"queue"+"/"+"目标地址"。
开始JMS编程前,我们需要先配置消息到达的目标地址(Destination),因为只有目标地址存在了,我们才能发送消息到这个地址。由于每个应用服务器关于目标地址的配置方式都有所不同,下面以jboss为例,配置一个queue类型的目标地址。
<?xml version="1.0" encoding="UTF-8"?>
<server>
<mbean code="org.jboss.mq.server.jmx.Queue"
name="jboss.mq.destination:service=Queue,name=ztfQueue">
<attribute name="JNDIName">queue/ztfQueue</attribute>
<depends optional-attribute-
name="DestinationManager">jboss.mq:service=DestinationManager</depends>
</mbean>
<mbean code="org.jboss.mq.server.jmx.Topic"
name="jboss.mq.destination:service=Topic,name=ztfTopic">
<attribute name="JNDIName">topic/ztfTopic</attribute>
<depends optional-attribute-
name="DestinationManager">jboss.mq:service=DestinationManager</depends>
</mbean>
</server>
注意:任何队列或主题被部署之前,应用服务器必须先部署Destination Manager Mbean,所有我们通过<depends>节点声明这一依赖。
二、在java类中发送消息(用到jndi.properties)。
一般发送消息有以下步骤:
1.得到一个JNDI初始化上下文(Context)
InitialContext ctx = new InitialContext();
2.根据上下文查找一个连接工厂ConnectionFactory,改连接工厂是由JMS提供的,不需我们自己创建,每个厂商都为它绑定了一个全局JNDI,我们通过它的全局JNDI便获取它;
QueueConnectionFactory factory = (QueueConnectionFactory)ctx.lookup("ConnectionFactory");
3.从连接工厂得到一个连接QueueConnection。
QueueConnection conn = factory.createQueueConnection();
4.通过连接来建立一个会话(Session);
QueueSession session = conn.createQueueSession(false,QueueSession.AUTO_ACKNOWLEDGE);
这句代码意思是:建立不需要事务的并且能自动确立消息已接收的会话。
5.查找目标地址:
Destination destination=(Destination)ctx.lookup("queue/ztfQueue");
6.根据会话以及目标地址来建立消息生产者MessageProducer(QueueSender和TopicPublisher都扩展自MessageProducer接口):
MessageProducer producer = session.createProducer(destination);
TextMessage msg = session.createTextMessage("您好:荆州,这是我的第一个消息驱动Bean");
producer.send(msg);
三、采用MessageDrivenBean接收消息。
当容器检测到bean守候的目标地址有消息到达时,容器调用onMessage()方法,将消息作为参数传入MDB。MDB在onMessage()中决定如何处理改消息。你可以使用注解指定MDB监听哪一个目标地址(Destination)。当MDB部署时,容器将读取其中的配置信息。
一个MDB通常要实现MessageListener接口,在接口定义了onMessage()方法。Bean通过它来处理收到的JMS消息。
@MessageDriven(activationConfig=
{
@ActivationConfigProperty
(propertyName="destinationType",propertyValue="javax.jms.Queue"),
@ActivationConfigProperty
(propertyName="destination",propertyValue="queue/ztfQueue"),
@ActivationConfigProperty(propertyName="acknowledgeMode",propertyValue="Auto-
acknowledge")
})
public class MessageDrivenBean implements MessageListener{
public void onMessage(Message message) {
TextMessage msg = (TextMessage)message;
try {
System.out.println(msg.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}
四、把工程src下的文件打成jar包(用到build.xml),在C:\jboss-5.0.0.GA\server\default\deploy进行部署。
五、运行发送消息的java类,此时在console中就可看见结果了。
六、至此,一个MessageDrivenBean开发就成功了。
发表评论
-
Message Broker 中JavaCompute Node 的一个示例
2012-11-14 15:00 971具体示例见附件. -
MessageBroker FileInput Node Demo
2012-11-06 14:57 828http://user.qzone.qq.com/819713 ... -
修改MQ字符编码集
2012-07-04 16:15 1787MQ字符编码集 1. 首先确 ... -
EJB3.0 MDB的实现
2012-06-25 17:11 1086 EJB3.0 MDB的实现 2009 ... -
Spring实现IBMMQ的JMS消息发布/订阅模式
2012-06-21 16:08 3109<?xml version="1.0" ... -
WAS7 集群手册
2012-06-12 17:02 969见附件. -
Spring JMSTemplate 与 JMS 原生API比较
2012-04-20 17:03 18264JMSUtil与Spring JmsTempl ... -
WAS7.0 + MQ 7.0 + JNDI 最简配置和收发示例
2012-04-12 17:29 57161、MQ上新建QM和MQ Q ... -
websphere部署war报错:发生 IWAE0022E Exception
2012-03-05 18:06 1476问题主要原因: J2EE版本过高. 环境: ... -
关于 WebSphere 的应用部署
2012-03-05 17:28 1663关于 WebSphere 的应用部署作者: Walter ... -
IBM MessageBroker笔记系列
2012-01-23 10:55 879http://user.qzone.qq.com/242641 ... -
MB与MQ简介
2012-01-21 18:17 1195原文地址:http://space.itpub.net/? ... -
MQ 教程
2011-12-21 15:44 793见附件 -
websphere 6.1 删除概要文件
2011-05-24 18:37 1371方案一:使用命令manageprofiles.bat cd D ... -
【zt】MyEclipse5.5GA配置Websphere V6.1 全过程(详细版)
2011-05-24 18:27 1168原文地址:http://blogold.chinaunix.n ... -
ActiveMQ实践:松耦合和ActiveMQ
2011-01-10 10:28 19202010-10-28 作者:B ... -
使用Spring JMS轻松实现异步消息传递
2011-01-07 17:31 3095异步进程通信是面向服务架构(SOA)一个重要的组成部分 ... -
Apache ActiveMQ教程(六)
2011-01-07 16:59 1866Apache ActiveMQ教程(六) 4 ... -
Apache ActiveMQ教程(五)
2011-01-07 16:58 1508Apache ActiveMQ教程(五) 2008-0 ... -
Apache ActiveMQ教程(四)
2011-01-07 16:57 1639七、ActiveMQ与Tomcat整合 说明:To ...
相关推荐
EJB3.0中文文档,实例教程.EJB3.0中文文档,实例教程.EJB3.0中文文档,实例教程.EJB3.0中文文档,实例教程.
《EJB3.0入门经典》内容丰富,讲解由浅入深,全面系统,在讲解EJB 3.0最新开发技术的同时,精心设计了与章节内容相关的实例,给出了开发过程中运用到的技巧和注意事项,相信读者一定能从中获益。
ejb3.0入门图文教程,包括EJB3.0开发Entity.pdf、EJB3.0开发Message Driven Bean.pdf、EJB3.0开发Session Bean.pdf
罗时飞精通EJB3.0.zip.001 罗时飞精通EJB3.0.zip.002 罗时飞精通EJB3.0.zip.003 《精通EJB3.0》共分为4个部分:第一部分对EJB编程基础进行介绍,概要性地对EJB进行了阐述;第二部分重点关注EJB编程的具体内容和...
罗时飞精通EJB3.0.zip.001 罗时飞精通EJB3.0.zip.002 罗时飞精通EJB3.0.zip.003 《精通EJB3.0》共分为4个部分:第一部分对EJB编程基础进行介绍,概要性地对EJB进行了阐述;第二部分重点关注EJB编程的具体内容和...
ejb3.0开发规范,开发ejb3.0过程中的参考文档
绍之中,应用实例更是少之又少,所以作者拟写本书,以简单的实例展现 EJB3.0 的开发过程,希望对大家有所帮 助。 EJB3 最激动人心的是 POJO 编程模型,我想对开发人员的影响将是非常大的,因为他降低了开发人员编写 ...
weblogic+ejb3.0weblogic+ejb3.0weblogic+ejb3.0weblogic+ejb3.0weblogic+ejb3.0weblogic+ejb3.0weblogic+ejb3.0
ejb 3.0 jar 包 很全ejb 3.0 jar 包 很全ejb 3.0 jar 包 很全ejb 3.0 jar 包 很全ejb 3.0 jar 包 很全ejb 3.0 jar 包 很全ejb 3.0 jar 包 很全
本书面向EJB 3.0的实际应用开发,通过大量的实例,循序渐进地为读者介绍了有关EJB 3.0开发所涉及的各类知识。全书共分16章,内容依次包含了Java EE概述、EJB基础、搭建EJB环境、会话bean、持久化实体、持久化实体...
本书内容丰富,讲解由浅入深,全面系统,在讲解EJB 3.0最新开发技术的同时,精心设计了与章节内容相关的实例,给出了开发过程中运用到的技巧和注意事项,相信读者一定能从中获益。 本书是EJB开发者的必备参考书...
本书内容丰富,讲解由浅入深,全面系统,在讲解EJB 3.0最新开发技术的同时,精心设计了与章节内容相关的实例,给出了开发过程中运用到的技巧和注意事项,相信读者一定能从中获益。 本书是EJB开发者的必备参考书...
EJB 3.0实例教程.pdf EJB 3.0实例教程.pdf
EJB3.0规范和EJB3.0经典入门(含源码) 本材料适合Java程序员、项目经理和系统架构师。学习本材料,您不需要EJB2.x知识,如果具备一些Web和jdbc知识,学习效率会更快些。学习本材料,初级Java程序员应在1个月左右,...
ejb3.0开发实例,会话bean开发,完整代码,适合入门学者
EJB3.0入门图文教程电子书,Jbuilder 2007,新版JBuilder2007基于Eclipse平台,与以往的JBuilder版本完全不 同.借助于Eclipse的开放平台以及丰富的插件,使得JBulider对当前的流行的框架支持非 常好,同时支持EJB3.0的...
EJB3.0规范 EJB3.0 SPECIFICATION 官方规范英文版
在Myeclipse,基于JBOSS EJB3.0实现了EJB3.0的初次体验,确实比EJB2.0方便了许多。文中有完整的过程和代码。
EJB 3.0 开发指南之定时服务非常经典
ejb2.0 ejb3.0的区别,比较详细讲解两者的区别