MDB!= JMS,反之亦然
基本
- 消息驱动Bean(又称为MDB)只是另一个EJB,如无状态,有状态或单例。 使用@MessageDriven批注指定。
- MDB用于异步消息处理
- 它们与无状态EJB 相似 ,因为它们都是由EJB容器池化的
- 但是,它们与无状态EJB不同,因为客户端无法直接访问 MDB。 只有容器会调用它们,以响应客户端发送到MDB正在侦听的端点的消息。
MDB的常用模式
- MDB通常与JMS(Java消息服务API)一起使用
- MDB配置为使用@ActivationConfigProperty侦听JMS目标,实现javax.jms.MessageListener接口,并在onMessage方法中提供业务逻辑(消息处理)
- 组件将消息发送到JMS目标( 端点 )。 这不是一个同步过程(如上所述)。 消息触发方法立即返回,容器负责调用配置为侦听该特定JMS目标的MDB
基于JMS的MDB
MDB神话
- MDB 不属于JMS规范的一部分, 也不以任何方式与JMS 耦合 –这是一个误解。
- MDB是池化的bean,可以以异步方式处理消息,并且可以侦听任何端点,包括JMS队列或目标 (最常见)。
- 实际上,从EJB 2.1开始就是这种情况,并且通过JCA(Java连接器体系结构)规范可以实现
什么是JCA?
- 在较高的层次上,JCA使Java EE服务器可以通过标准SPI与外部系统(例如旧版企业信息源等)进行交互(此处不处理复杂的JCA详细信息)
- 可以使用JCA标准接口为特定系统构建资源适配器(RAR文件)
- JCA为Java EE容器与外部系统之间的双向通信(入站和出站)提供合同-资源适配器本身需要实现该实现
礼貌:JCA规范文档
JCA如何实现通用MDB的概念?
- JCA定义了MDB特定的功能
- 就像在基于JMS的MDB中一样,基于JCA的MDB也需要实现一个接口并定义激活属性(两者都特定于JCA Resource Adapter实现)
- 外部系统发送一条消息,资源适配器通过其入站JCA合同的实现接受该消息,并将该消息中继到内部端点(这又是特定于JCA适配器实现的)
- 注册到此端点的MDB会在接收到的消息上执行业务逻辑
基于JCA的MDB
最终结果
外部系统使用标准接口(JCA)将消息发送到Java EE容器,而JCA实现则负责将其传递到适当的端点,该端点进一步将其传递给已注册的MDB
需要注意的是,由于EJB规范供应商必须支持基于JCA的MDB,因此它在Java EE服务器之间是完全可移植的 。
进一步阅读
- JCA规范
- JMS规范
- EJB规范
翻译自: https://www.javacodegeeks.com/2015/01/mdb-jms-and-vice-versa.html
MDB!= JMS,反之亦然相关推荐
- .mdb_MDB!= JMS,反之亦然
.mdb 基本 消息驱动Bean(又称为MDB)只是另一个EJB,例如无状态,有状态或单例. 使用@MessageDriven批注指定. MDB用于异步消息处理 它们类似于无状态EJB,因为它们都是由 ...
- jms mdb_MDB!= JMS,反之亦然
jms mdb 基本 消息驱动Bean(又称为MDB)只是另一个EJB,例如无状态,有状态或单例. 使用@MessageDriven批注指定. MDB用于异步消息处理 它们与无状态EJB 相似 ,因为 ...
- EJB3.0学习笔记---JMS/MDB/Pub/Sub/P2P
JMS: 1.jms是java的消息服务,jms的客户端之间可以通过jms服务进行异步的消息传输,jms支 持两种消息模型,Point--to--Point(P2P)和Publish/Subscri ...
- JMX, JMS, MDB of EJB
JMX与webservice的区别 JMX监控,监视另一个系统的信息.两个系统之间可能在同一个端.webservice多用于远程信息交互. JMS与EJB的消息驱动Bean有何区别 JMS是Java ...
- java jms过时了么_JMS Message正在从Hibernate获取过时的数据
我有一个托管实体,它附加了一个EntityListener . PostUpdate和PostPersist上的EntityListener将实体添加到JMS队列以进行更多处理 . 所以这是场景,我有 ...
- Java消息服务JMS详解
2019独角兽企业重金招聘Python工程师标准>>> JMS: Java消息服务(Java Message Service) JMS是用于访问企业消息系统的开发商中立的API.企业 ...
- 《Spring 5 官方文档》26. JMS(二)
26.4 接收消息 26.4.1 同步接收 虽然 JMS 通常与异步处理相关,但它也可以同步地消费消息.可重载的receive(..)方法提供了这个功能.在同步接收期间,调用线程阻塞,直到接收到消息. ...
- jboss5+EJB3+MDB Queue
在使用jboss5进行MDB的试验时首先要在jboss5中配置jms 队列. 1)在jboss安装目录下:server\default\deploy\messaging 打开destinations- ...
- JMS分布式应用程序异步消息解决方案EhCache
高速缓存同步问题
部分博客中描述的使用拦截器怎么用EJB公布的WebService加入缓存,这样能够提高WebService的响应效率.但是即使是这样做,还是要经历网络的传输的.于是决定在调用WebService的程序 ...
最新文章
- linux漏洞知乎_安装 Manjaro Linux 后必做的 6 件事 | Linux 中国
- 来吧,我教你画真正的流程图
- GDCM:gdcm::SplitMosaicFilter的测试程序
- 一个java类可以有_一个.java文件中可以有几个同级类?
- Randomatic mac - AE随机摆动的字母图层效果脚本
- 计算机刚开机时执行的是,电脑刚开机就提示自动关机该怎么办
- qt +ChartDirector 绘制图表
- 软件测试技术教程徐光侠,软件测试技术教程徐光侠韦庆杰第十二章节自动测试工具QTP的使用.ppt...
- 安卓客户端使用矢量图
- 新华三交换机基于MAC的vlan划分
- qiankun+vue项目开发
- 重拾英语-时态【转自鑫闻】
- 实例对比 Julia, R, Python,谁是狼语言?
- 港科夜闻|香港科大汪扬教授轻松访谈:对话西泽投资管理主席刘央女士,倾听她跌宕起伏的30年投资生涯...
- 【SLAM】2019浙大SLAM暑期学校--刘浩敏《集束调整》学习记录
- 12月编程语言排行榜公布啦~
- 深度思考: 如何做好一个开源项目?
- 人工智能与大数据行业的兴起,主要产生了哪些新的职位?
- 基于CORBA规范的中间件——CORBA基本原理
- C#读取DWG文件方法
热门文章
- JS浏览器加载一个页面的过程
- 2017蓝桥杯省赛---java---B---10(k倍区间)
- shell文本处理工具grep
- 如何兼容html在不同分辨力的问题,现代教育技术练习题
- rabbitmq-路由模式-routingkey
- 打印结果和调试结果不一样(C语言)
- jdk8 string::_JDK 12的String :: transform方法的简要但复杂的历史
- java 8 stream_Java 8 Stream示例
- java登录界面命令_Java命令行界面(第15部分):Jargo
- jdbc mysql驱动_MySQL JDBC驱动程序如何处理准备好的语句