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,一经查实,立即删除!

相关文章

4.1邮箱的全选,全不选,反选

事件&#xff1a;onclick 属性&#xff1a;checked 对于分清getElementsByTagName(元素名)里的元素名&#xff0c; 可以先提取其外面一层的元素&#xff0c;再在此基础上用getElementsByTagName(元素名) 用到for语句&#xff0c;if语句&#xff0c;length <!DOCTYPE ht…

调了 好几天的问题 treeview 的js 处理复选框之间的关系,选中子框父框自动选中,单独执行 没问题 放到框架页里 就有问题...

刚开始的js 这么写的 function OnTreeNodeChecked() {var ele event.srcElement;if (ele.type checkbox) {var childrenDivID ele.id.replace(CheckBox, Nodes);var div document.getElementById(childrenDivID);if (div ! null) {var checkBoxs div.getElementsByTagName…

1.2鼠标移入移出改变背景色和其他大小样式

功能&#xff1a;鼠标移入div,背景色变为绿色&#xff0c;宽变小&#xff0c;长变大&#xff0c;移出恢复原状 事件&#xff1a;onmouseover,onmouseout 属性&#xff1a; background,width,height <!DOCTYPE html><html><head><meta charset"utf…

JDK 9 –给圣诞老人的信?

众所周知&#xff0c;冬天&#xff08;尤其是圣诞节前的时间&#xff09;是做梦的合适时机&#xff0c;希望有一个梦想似乎可以触摸的时刻。 当孩子们和大人在纸上或在对圣诞老人的虚构或真实信件中写下自己的梦想的那一刻&#xff0c;希望他们的梦想将成为现实。 这很引人注目…

周三的工作 张孝祖

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

H5本地存储

在以前&#xff0c;我们想要存储一些数据&#xff0c;并且只是在前端使用&#xff0c;服务端并不会使用&#xff0c;我们只能存在cookie里&#xff0c;但是cookie会跟随请求头在客户端和服务端之间来回传递&#xff0c;而且cookie还有一些缺点&#xff0c;H5提供了webStorage的…

在哪里可以运行EJB?

EJB不仅为Java EE应用服务器而建。 他们还可以执行在的Java EE Web Profile的容器或简单的Java SE环境&#xff08;Java SE的啊- &#xff01;E&#xff01;ASY 的J ava 乙是指合同&#xff09;。 EJB Lite 仅支持完整的EJB规范提供的功能的子集所必需的-相同功能的轻量级版本…

sql查询结果字段名与字段值倒过来了

数据库为sybase, sql如下&#xff1a; 1 select substring(LRRJG,1,7) as SSQJ, 2 sum(case when RWDL_BH 01 then 1 else 0 end) AS A, 3 sum(case when RWDL_BH 01 and XBHSJG ! null then 1 else 0 end) AS B 4 from ZYH_DBRW_LRNSRRW 5 where LR_DBRW_ID ! null and DR …

Promise实战AJAX封装

一、利用Promise的知识&#xff0c;对最开始的ajax的例子进行一个简单的封装&#xff1a; var url xxx; // 封装一个get请求的方法 function request(url){return new Promise(function(resolve,reject){var XHR new XMLHttpRequest();XHR.open(GET,url,true);XHR.send();XHR…

重新设计Hamcrest

我在Hamcrest库上做了几篇文章 &#xff0c;我确实很喜欢使用它&#xff0c;但是我希望对其进行一些更改。 我了解他们做出的大多数设计决策&#xff0c;但我认为其中一些确实不值得。 介绍Litecrest 我对库所做的大多数更改都有助于减轻Hamcrest的负担&#xff0c;因为我觉得…

CSS 垂直居中

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

Java EE拦截器

历史 我认为重要的是要看一下Java EE中的Interceptor的发展&#xff0c;因为它是从EJB特定的项目开始的&#xff0c;后来又演变成一个单独的规范&#xff0c;现在可供其他Java EE规范扩展&#xff0c;这一事实很简单。 版本1.0 拦截器最初是在EJB 3.0 &#xff08; Java EE 5的…

New Begin

已经研究生三年级了&#xff0c; 最近也找好了工作&#xff0c;应该要开始自己的程序人生了。 虽然说写程序也写了很一段时间了&#xff0c; 决定现在开始在cnblogs这个&#xff0c;记录下自己的学习轨迹。开始维护自己的blogs。转载于:https://www.cnblogs.com/binzeehale/ar…

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

有机会多熟悉下开源框架

Struts2&#xff0c;Spring&#xff0c;Hibernate等开源框架的使用转载于:https://www.cnblogs.com/yqskj/archive/2012/11/05/2756085.html

vue之node.js的简单介绍

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

Java 8 StringJoiner

在Java 8发行版中&#xff0c;最受关注的是Lamda&#xff0c;新的Date API和Nashorn Javascript引擎。 在这些阴影下&#xff0c;有较小但有趣的变化。 其中之一是StringJoiner的引入。 StringJoiner是用于分隔字符或字符串列表的实用程序。 您可能会认出以下代码&#xff1a; …

设置TextView为下划线的样式

1 tvUserTel.setText(Html.fromHtml("<u>"usertel"</u>")); 2 tvUserTel.setTextColor(Color.BLUE);//设置为蓝色 转载于:https://www.cnblogs.com/Tristan2012/archive/2012/11/06/2757239.html

jQuery之jQuery扩展和事件

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