EJB(三)细说message-driven bean
来源:互联网 发布:linux中的uniq 编辑:程序博客网 时间:2024/06/06 17:42
EJB(三)细说message-driven bean
版权声明:本文为博主原创文章,未经博主允许不得转载。
目录(?)[+]
EJB的Message-driven bean基于JMS来实现的。在说明Message-driven bean之前需要来了解一下jms。
JMS
Java-message-service,java程序和企业级应用交互的一套规范,定义一组用于创建、发送、以及接受消息的API。发送者不需要知道接受者的任何内容,接受者也是同样。对于双方都是一种透明的方式来进行异步交互。J2ee1.3版本开始支持JMS,而JMS主要提供了一种标准的底层消息通信的规范。JMS有两种消息模型,p2p以及pop\sub模型。点对点主要通过消息队列的方式来消息传递,而发布订阅通过主题来实现订阅消息。
P2p
点对点的消息模型。发送者将消息发送到消息队列,接受者通过队列取得消息;适合单个接收者的消费者。类似于QQ的好友之间的即时通信。
结构
Reciver
接受者从队列中接收消息,接受成功后应答结果
队列
消息发送到队列之后,会一直保留知道接受者接受成功该消息;
另外队列对于发送者和接受者来讲都是脱离工作的,接受者是否接受信息对于发送者发送消息到队列是没有影响的;
队列中的消息的是顺序存储的。
Sender
发送者发送消息到队列,消息将在队列中保存,直到被接收或者超时。
这样一个过程是异步处理的,接受者并不依赖发送者。发送者也不依赖与接受者。
pub\sub模型
类似于QQ的群聊,多个发布者将消息发送到指定主题,订阅者通过订阅该主题后能够接受到来自发布者的消息。主题负责将消息保存和分发。
结构
两种模型的API
和点对点模型不同的是,消息会使所有订阅者接收。并且只有当订阅者处于线上状态时才能接收到消息。
message-driven bean
而JMS也是属于J2EE的规范之一。所以如果要支持JMS,就需要来按照jms定义jms中的一系列概念。
上面讲了JMS中的两种模型,EJB中的MDB就是这样一个异步的监听消息服务。
模型
JMS为j2ee的规范之一,定义了一些规范,如果要支持JMS就需要定义这样一系列的概念。如图所示连接工厂,会话等。
Connection factory:
这个很好来理解,类似jdbc的数据源创建工厂;在创建数据源时需要一个创建工厂,这里也是同样的道理。需要一个连接创建工厂用来创建来创建呢?通过jndi查找来获得。JMS的API定义两种连接工厂创建对象,分别是QueueConnectionFactory TopicConnectionFactory对应着p2p和p\sub两种消息传递模式。
connection:
通过connectionfactory就可以创建connection,connection是什么,具体也不太清楚,是对TCP\IP协议的一个简单包装。对应的也有两种QueueConnectionTopicConnection。
session:
用来生产消息的生产者、消息消费者、消息;还有对于这些消息的事务封装。
QueenSession TopicSession
messageProjducer:
消息的生产者。由session创建,通过send\publish来发送消息到Destination。
MessageConsumer:
消息消费者。由session创建,通过receive\OnMessage来获取消息。
和sessionbean的区别
无论是有状态的消息bean还是无状态的消息bean。在客户端调用服务器的bean时,都需要在客户端来引用服务器的接口。而MDB就不存在这个依赖的关系,唔需要关系接口。但是在某种程度上也算是需要一些依赖,比如说在服务器上mdb发送的一个是user对象,在客户端也需要针对这个消息进行user对象的处理。但是不存在接口之间的依赖。
第一个MDB
代码
MDB
client
总结
应该是MDB是JMS规范的一种实现方式,通过规范定义的API来书写这个流程即可。大致有这样几个步骤。
1)得到ConnectionFactory对象;
2)用ConnectionFactory创建Connection 对象;
4)用Connection对象创建一个或多个JMS Session;
5)JNDI创建destination
6)创建消息发送者、消息
- 顶
- 0
- 踩
- 0
参考知识库
Java SE知识库
Java EE知识库
Java 知识库
- 猜你在找
- 14楼 黎明的蜗牛 2015-05-07 23:19发表 [回复]
- message-driven bean的详细讲解,学习了。
- 13楼 李贺刚 2014-12-31 14:52发表 [回复]
- 讲解的很深入,学习了。
- Re: CraftsmanChen 2014-12-31 22:24发表 [回复]
- 回复a137151062:互相学习
- 12楼 9_张晓 2014-12-31 14:12发表 [回复]
- EJB的Message-driven bean基于JMS来实现的
- Re: CraftsmanChen 2014-12-31 22:25发表 [回复]
- 回复ggibenben1314:互相学习
- 11楼 ZeroWM 2014-12-30 13:31发表 [回复]
- 博客看起来很舒服。
- Re: CraftsmanChen 2014-12-31 22:25发表 [回复]
- 回复successA:互相学习
- 10楼 chestnut_lan 2014-12-30 08:50发表 [回复]
- message-driven bean的详细讲解
- Re: CraftsmanChen 2014-12-31 22:24发表 [回复]
- 回复lantingxv_jing:互相学习
- 9楼 徐志鹏 2014-12-29 22:03发表 [回复]
- 先来学习学习
- Re: CraftsmanChen 2014-12-31 22:24发表 [回复]
- 回复u010158267:互相学习
- 8楼 李社河 2014-12-05 20:06发表 [回复]
- EJB的Message-driven bean基于JMS来实现的
- Re: CraftsmanChen 2014-12-31 22:25发表 [回复]
- 回复lishehe:互相学习
- 7楼 贤子 2014-12-05 18:46发表 [回复]
- 消息驱动bean,介绍的很好
- Re: CraftsmanChen 2014-12-31 22:25发表 [回复]
- 回复kanglix1an:互相学习
- 6楼 陈丽娜 2014-12-05 13:53发表 [回复]
- 很详细的介绍呀!
- Re: CraftsmanChen 2014-12-31 22:25发表 [回复]
- 回复jly4758:还是得实践啊
- 5楼 谷海燕 2014-12-04 17:18发表 [回复]
- 都研究到这儿啦.
- Re: CraftsmanChen 2014-12-31 22:26发表 [回复]
- 回复zhuanzhe117:初步学习
- 4楼 fightingKing 2014-12-02 13:49发表 [回复]
- 讲解的很深入,学习了。
- 3楼 zllaptx4869 2014-11-30 21:31发表 [回复]
- 回调注解在消息驱动bean挺有意思的一个
- Re: CraftsmanChen 2014-12-31 22:26发表 [回复]
- 回复zllaptx4869:是的
- 2楼 ironxue 2014-11-29 16:00发表 [回复]
- 图文并茂,介绍得很清晰,顶楼主。
- 1楼 于亮 2014-11-27 20:54发表 [回复]
- 介绍的相当有水平
- Re: CraftsmanChen 2014-12-31 22:26发表 [回复]
- 回复jiuqiyuliang:互相学习
- EJB(三)细说message-driven bean
- EJB(三)细说message-driven bean
- EJB之Message-Driven Bean
- 【EJB基础】Message Driven Bean
- EJB中的Message-Driven Bean理解!
- Message Driven Bean & JMS
- Message Driven Bean & JMS
- Eclipse3.2.1中开发EJB 2.x的Message Driven Bean(MDB)
- Eclipse3.2.1中开发EJB 3.0的Message Driven Bean(MDB)
- [原创]Message Driven Bean 学习
- 消息驱动Bean (Message Driven Bean)
- JMS与Message-Driven Bean使用总结
- JMS与Message-Driven Bean使用总结
- MDB(message driven bean)收消息
- EJB---->JMS(Java Message Service)和消息驱动bean
- EJB三种bean
- 【EJB】(二)EJB的三种Bean
- EJB3.0 消息驱动:MDB(Message Driven Bean)
- InstantRun框架源码分析之一
- Java面试知识点(全面)
- CSU 1913: 送礼物 (二分答案 + 线段树)
- WAMPServer自定义端口号
- 不得不知的 load 与 initialize
- EJB(三)细说message-driven bean
- JSP表单提交和表单校验
- AJAX 状态值(readyState)与状态码(status)详解
- 【剑指offer】删除链表中重复的结点
- 可变个数参数方法的使用
- java函数-生成素数表
- 史上最全的WebSettings说明
- 为什么需要开发web接口
- 04-树6 Complete Binary Search Tree