J2EE技术(三)——JMS

 一、JMS基本思想

JMS(Java Message Service)即java消息服务,提供了一组标准的java API,用于企业级的消息处理。通过JMS可以在java程序之间发送和接受消息以达到交换数据的目的。

一个JMS应用由以下几部分组成:

1、       消息发送者(消息生产者):消息发送者是指消息的创建者和发送者,是消息的发源地。

2、       JMS提供者:是指实现JMS API接口的消息系统,是消息的中转站。JMS定义了Java中访问消息中间件的接口,但JMS只是接口,并没有给予实现,实现JMS接口的消息中间件称为JMS提供者(JMS Provider)。WebLogic Server内嵌了消息中间件的功能,所以WebLogic Server就充当了JMS提供者的角色。

3、       消息接受者(消息消费者):消息接受者是指接受消息的应用程序,是消息的最终的目的地。

4、       管理对象:管理对象是预定义的JMS对象,客户端使用这些预定义的对象进行通信,例如JMS连接工厂。

二、JMS通信机制

1、点到点通信(PTP)模式

JMS把每一个消息传递给一个消息消费者,并只有唯一的一个,即一个消息生产者对应一个消息消费者。

2、发布/订阅(Publish/Subscribe,Pub/Sub)模式

一个消息生产者对应多个消息消费者。

 

可以在一个应用中同时使用这两种消息传递方式。

三、JMS概念的一些简洁定义

连接工厂(ConnectionFactory):客户端用来创建连接的管理对象。

连接(Connection):代表一个与JMS提供者的活动连接。

目的(Destination):标识消息的接收方式。分为队列(Queue)和主题(Topic)两种。

会话(Session):接收和发送消息的会话线程。

消息生产者(MessageProducer):会话使用它把消息发送到目的地。

消息消费者(MessageConsumer):会话使用它从目的地接受消息生产者发送的消息。

四、JMS消息发送及接收的过程:
1、发送消息过程:

(1)、使用JNDI查询管理对象ConnectionFactory和Destination。

(2)、使用管理对象ConnectionFactory建立连接Connection。

(3)、使用连接Connection建立会话Session。

(4)、使用会话Session和管理对象Destination创建消息生产者MessageProducer。

(5)、使用消息生产者MessageProducer发送消息。

2、接受消息的客户端使用JMS的过程:

(1)、使用JNDI查询管理对象ConnectionFactory和Destination。

(2)、使用管理对象ConnectionFactory建立连接Connection。

(3)、使用连接Connection建立会话Session。

(4)、使用会话Session和管理对象Destination创建消息消费者MessageConsumer。

(5)、使用消息消费者MessageConsumer接收消息。

五、JMS消息类型

(1)、StreamMessage:消息由串行化的Java对象组成,必须按照设置时的顺序读取对象。

(2)、MapMessage:消息由名称/值对组成,其中名称为字符串类型,值为Java数据类型。可以使用列举顺序读取该消息的值,也可以通过名称无序地获取值。

(3)、TextMessage:消息的主体为字符串(),这是最常用的消息类型。

(4)、ObjectMessage:消息的主体为串行化的Java对象,可以是自己定义的串行化的Java对象。

(5)、BytesMessage:消息的主体是二进制数据。

Weblogic.jms.extensions.XMLMessage 是WebLogic实现的JMS提供者提供的扩展的消息类型,提供更便利的操纵XML内容的方式。

 

 

 

转载于:https://www.cnblogs.com/CharmingDang/archive/2011/12/20/9663968.html

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

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

相关文章

ssh-keygen -t rsa执行后提示没有权限

ssh-keygen -t rsa生成密钥文件和私钥文件 产生原因:ssh-keygen命令不是被识别的内部或者外部命令,没有权限 解决方案:把这个命令加入到全局变量内,再执行,就OK了 1.找到git安装目录下ssh-keygen地址: 2.把…

windows安全警报怎么关闭_鄂州人注意!本周五上午,全市将进行防空警报鸣放...

根据《人民防空法》规定,经鄂州市政府批准,于2020年10月23日上午9时10分进行防空警报鸣放,届时请市民不要惊慌,保持正常的工作和生活秩序。■延伸若是战时防空警报响起,市民该怎么做?如今是和平年代&#x…

dialog

http://www.eoeandroid.com/forum.php?modviewthread&tid84871 1.确定取消对话框 对话框中有2个按钮 通过调用 setPositiveButton 方法 和 setNegativeButton 方法 可以设置按钮的显示内容以及按钮的监听事件。 我们使用AlerDialog 创建对话框 AlertDialog.Builder buil…

Visual Studio 添加 自定义 路径宏

在编辑VS工程包含路径和库路径时,有时需要添加第三方包的路径,比如c boost库, 为了协作的方便,不合适直接把本地绝对路径添加入工程设置,此时可以添加自定义路径宏, 然后参与协作的每个开发人员&#xff0c…

openwrt 19 overlay 空间不足_重视 | 山西一矿井瓦斯爆炸,有限空间作业切记注意安全...

新闻速递20日2时许,山西潞安集团左权阜生煤业井下发生一起瓦斯爆炸事故,造成4人遇难、1人受伤。目前事故救援基本结束,事故原因正在调查中。近年来有限空间作业事故频发2010年6月21日凌晨1时40分左右,平顶山市卫东区兴东二矿发生井…

in python you can_Python编程:从入门到实践——【作业】——第十章(文件和异常)...

第十章10-1 Python学习 笔记 : 在文本编辑器中新建一个文件, 写几句话来总结一下你至此学到的Python知识, 其中每一行都以“In Python you can”打头。 将这个文件命名为learning_python.txt, 并将其存储到为完成本章练习而编写的…

辨析 const指针 和 指向常量的指针

辨析以下几种指针p的定义。 int tmp 5;int *p &tmp; const int *p &tmp; int const* p &tmp; int * const p &tmp; const int * const p &tmp; int const * const p &tmp; 根据文献一,可以采用从右往左读的方式区分。 第一个为普通指…

扩展极小值—lhMorpEMin

扩展极小值(5*5正方形 h100 显示结果二值化) 函数:lhMorpEMin 说明:形态学扩展极小值 参数: src 输入图像 dst 输出图像 h 深度或动态范围阈值 se 结构元素 源码: void lhMorpEMin(const IplImage* src…

c++win32项目 如何显示后再删除一个绘图_CAD快速绘图,不可不知的50个经典技巧,看完不迷茫!...

1、文字镜像如何设置转动与不转动?A、在镜像前,输入MIRRTEXT指令B、输入新值0 代表不转动 ;输入新值1代表转动C、MIRRTEXT指令完成后,输入MI镜像指令就OK了2、CAD的版本转换?A、CAD高版本可以打开所有低版本的图纸B、C…

[html] 你有使用过template标签吗?说说它的用途有哪些?

[html] 你有使用过template标签吗&#xff1f;说说它的用途有哪些&#xff1f; HTML内容模板&#xff08;<template>&#xff09;元素是一种用于保存客户端内容机制&#xff0c;该内容在加载页面时不会呈现&#xff0c;但随后可以(原文为 maybe)在运行时使用JavaScript实…

用python画统计图表_Python数据科学(九)- 使用Pandas绘制统计图表

作者&#xff1a;许胜利 Python爱好者社区专栏作者博客专栏&#xff1a;许胜利的博客专栏1.信息可视化因为人对图像信息的解析效率比文字更高&#xff0c;所以可视化可以使数据更为直观&#xff0c;便于理解&#xff0c;使决策变得高效&#xff0c;所以信息可视化就显得尤为重要…

PHP添加php-java-brideg模块(ubuntu环境)

1、下载php-java-bridge 下载地址&#xff1a;https://sourceforge.net/projects/php-java-bridge/files/Binary%20package/php-java-bridge_7.2.1/exploded/JavaBridge.jar/download 2、将JavaBridge.jar上传到linux服务器中。例如/usr/local/src/ 3、修改php.ini文件。用find…

YSlow简介与使用(转)

原文&#xff1a;http://www.huluboke.com/firebug-yslow/ 除了Firebug自带的网络监控功能以外&#xff0c;还有很多Firebug监控插件提供更为详细的监控信息报告&#xff0c;在此介绍其中的佼佼者&#xff0c;YSlow。YSlow的下载地址为&#xff1a;http://developer.yahoo.com/…

安卓手机阅读器_乐应用|安卓手机本地阅读的不二之选

现在属于个人的时间越来越碎片化&#xff0c;因此为了方便&#xff0c;很多人选择在手机上阅读书籍。不同的人&#xff0c;有不同的阅读喜好&#xff0c;所以合适的阅读软件没有最好&#xff0c;只有更好。比如有人喜欢追网络小说&#xff0c;应用中集成在线书库就比较重要&…

[html] 你有使用过blockquote标签吗?说说它的用途有哪些?

[html] 你有使用过blockquote标签吗&#xff1f;说说它的用途有哪些&#xff1f; 用于标记长的引用 浏览器在 blockquote 元素前后添加了换行&#xff0c;并增加了外边距。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷…

莫兰迪色rgb颜色表_企业风险评价,(SCL)安全检查表,Excel工作表

说实在的&#xff0c;在很多中小企业里&#xff0c;风险评价在企业运行过程中&#xff0c;还是一项比较概念化的工作&#xff0c;明确地说就是不被重视&#xff0c;似乎有没有都无所谓。初次接触风险评价&#xff0c;感觉十分陌生&#xff0c;不知道从何入手&#xff0c;什么都…

cmake 判断操作系统平台

转载自 cmake 判断操作系统平台 MESSAGE(STATUS "operation system is ${CMAKE_SYSTEM}")IF (CMAKE_SYSTEM_NAME MATCHES "Linux")MESSAGE(STATUS "current platform: Linux ") ELSEIF (CMAKE_SYSTEM_NAME MATCHES "Windows")MESSAGE(…

android JSON数据解析

JSON作为一种“轻量”的数据结构传递数据&#xff0c;在JS中有广泛的应用Google公司对JSON的解析提供了gson.jar这个包&#xff0c;它不依赖于其他任何JAR包&#xff1b;目前在Android3.0中已经合入了该解析器的功能&#xff0c;但之前的版本是没有的。 findViewById(R.id.pars…

输入参数的数目不足 matlab_哈工大被禁用MATLAB,工科学生慌了,论文至上间接导致软件依赖?...

“与其让毕业生天天愁毕业论文的重复率&#xff0c;不如踏踏实实地搞点创新。”文 | 木兔 编辑 | 小豆6月6日起&#xff0c;陆续有哈尔滨工业大学(以下简称哈工大)的学生在知乎等社交网络上反映&#xff0c;MATLAB软件突然不能用了&#xff0c;明明学校已经购买了全套正版软件&…