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

基于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规范文档

JCA如何实现通用MDB的概念?

  • JCA定义了MDB特定的功能
  • 就像在基于JMS的MDB中一样,基于JCA的MDB也需要实现一个接口并定义激活属性(两者都特定于JCA Resource Adapter实现)
  • 外部系统发送一条消息,资源适配器通过其入站JCA合同的实现接受该消息,并将该消息中继到内部端点(这又是特定于JCA适配器实现的)
  • 注册到此端点的MDB会在接收到的消息上执行业务逻辑
基于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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/361165.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

周三的工作 张孝祖

今天的任务是主面板master嘿嘿 上头有几个按钮,登录登出,个人信息,注册注销等,他们是根据用户是否等率决定的 具体代码如下 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System…

CSS 垂直居中

1、使用绝对定位垂直居中 绝对对位原理:元素在过度受限情况下,将margin设置为auto,浏览器会重算margin的值,过度受限指的是同时设置top/bottom与height或者left/right与width。 .absolute_center{/*display:none;*/position:absol…

[ExtJs6] 环境搭建及创建项目

1. 环境搭建 sencha cmd 和 extjs6 sdk.sencha cmd: https://www.sencha.com/products/extjs/cmd-download/extjs6: https://www.sencha.com/sencha cmd 安装过程将其加入系统的环境变量path中。export PATH${PATH}:/Users/shuanggai/bin/Sencha/Cmd/6.2.2.36把改语句添加到 ~/…

通过Spring Integration和RabbitMQ获得高可用性的AMQP支持的消息通道

Spring Integration消息通道默认情况下将消息存储在内存中。 这是因为内存速度快,易于实现,并且不会增加网络成本。 但是,在某些情况下,这可能会引起问题,因为如果应用程序崩溃或服务器意外关闭,所有消息都…

vue之node.js的简单介绍

一、什么是node.js? 它是可以运行JavaScript的服务平台,可以吧它当做一门后端程序,只是它的开发语言是JavaScript 二、安装 1、node.js的特性: - 非阻塞IO模型- 时间驱动 2、运用的场景: - 高并发低业务- 实时场景- 聊…

jQuery之jQuery扩展和事件

一、jQuery事件 常用事件 blur([[data],fn]) 失去焦点 focus([[data],fn]) 获取焦点( 搜索框例子) change([[data],fn]) 当select下拉框中的元素发生改变的时候触发change事件(select例子) click([[data],fn]) 点击 dblclick([[data],fn])…

JavaFX列表示例

这是使用JavaFX构建的示例列表应用程序。 该应用程序是待办事项列表。 此应用程序具有添加,更新和删除列表中项目的功能。 列表数据存储在HSQLDB关系数据库中。 该应用程序使用JDBC(Java数据库连接)API访问数据库。 该应用程序打包为可执行JA…

flex弹性布局操练2

上一个是练习的1个内元素的,这次练习两个元素的。 ul.box1 {list-style:none;background-color:black;display:flex;justify-content:space-between;/*水平轴的位置,默认是flex-start就是第一种情况*/align-items:center;/*垂直轴的位置*/width:100px;height:100px;…

Selenium1 Selenium2 WebDriver

内容摘要: Selenium 1 原理WebDriver WebDriver 组件WebDriver 协议 Remote End 处理流程Commands & Endpoints & 请求路由错误消息 WebDriver 配置 Selenium 2 1、Selenium 1 原理 (1).测试用例(Testcase)通过Client Lib的接口向Se…

Fork / Join框架vs并行流vs.ExecutorService:最终的Fork / Join基准

Fork / Join框架在不同配置下如何工作? 就像即将上映的《星球大战》一样,围绕Java 8并行性的批评也充满了兴奋。 并行流的语法糖带来了一些炒作,就像我们在预告片中看到的新型光剑一样。 现在,有了许多使用Java进行并行处理的方法…

CSRF攻击与防御

CSRF是什么 CSRF在百度百科中是这么说的:“CSRF(Cross-site request forgery跨站请求伪造,也被称为“one click attack”或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本&a…

Silverlight学习笔记(九)-----RenderTransform特效【五种基本变换】及【矩阵变换MatrixTransform】...

RenderTransform特效: 变形(RenderTransform)类是为了达到直接去改变某个Silverlight对象的形状(比如缩放、旋转一个元素)的目的而设计的,RenderTransform包含的变形属性成员就是专门用来改变Silverlight对…

React 篇 Search Bar and content Table

我们要构建一个模块,其中包含一个内容显示的表格,然后上面有一个提供Search的栏位,并对Search中输入栏进行监听,当有改变的时候,触发Search然后对内容表中的内容进行过滤。 Demo Link:http://czrmodel.mybluemix.net/…

PrimeFaces:在动态生成的对话框中打开外部页面

我已经在即将出版的PrimeFaces Cookbook 2版中写了一篇关于食谱的博客。 在这篇文章中,我想发表第二篇关于一个名为Dialog Framework的小型框架的文章。 我个人喜欢它,因为我记得我为使用Struts框架付出同样的努力而付出的代价。 当您想将外部页面加载到…

vue-router之 beforeRouteEnter

beforeRouteEnter在每次路由切换都执行 ,而项目优化后,切换路由mounted只在最开始执行一次beforeRouteEnter的具体用法可参考官方文档 https://cn.vuejs.org/v2/guide/migration-vue-router.html#activate-替换 需要注意的是:在这期间路由跳转携带的数据发生改变会影…

突破极限–如何将AeroGear Unified Push用于Java EE和Node.js

在2014年底的AeroGear队宣布红帽的JBoss统一推送服务器的可用性xPaaS 。 让我们仔细看看! 总览 统一推送服务器允许开发人员将本地推送消息发送到Apple的推送通知服务(APNS)和Google的云消息传递(GCM)。 它具有一个内…

js 获取json数组里面数组的长度

作为一个前端页面开发者第一次处理json数据,遇到了‘js 获取json数组里面数组的长度’?竟然不知道 json没有.length属性(真是要嘲讽下自己),少壮不努力老大徒伤悲啊!以前都是去寻求男朋友帮助,但…

针对WildFly和EAP运行Java Mission Control和Flight Recorder

Java Mission Control (JMC)使您可以监视和管理Java应用程序,而无需引入通常与这些类型的工具相关的性能开销。 它使用为正常的JVM动态优化而收集的数据,从而形成了一种非常轻量级的方法来观察和分析应用程序代码中的问题。 JMC由…

C#堆栈和堆的讲解

OS和CLR通常将用于容纳数据的内存划分为两个独立的区域,每个区域都采用截然不同的方式来管理:堆栈(Stack)和堆(heap)。(1) 调用一个方法时,它的参数以及它的局部变…

jQuery中的常用内容总结(一)

jQuery中的常用内容总结(一) 前言 不好意思(✿◠‿◠),由于回家看病以及处理一些其它事情耽搁了,不然这篇博客本该上上周或者上周写的;同时闲谈几句:在这里建议各位开发的童鞋,如果有疾病尽快治疗,不要拖&a…