z TextMessage——消息体包含的是 java。lang。String 。这个消息类型是基于一个假设:
String 消息被广泛的使用。这是因为XML 很可能变成一个代表JMS 消息内容的流行
机制。
z ObjectMessage——消息包含了可序列化的 Java 对象。如果需要java 对象的集合,
那么可以使用在JDK1。2 中提供的集合类。
z BytesMessage——消息包含了一个未解释的字节流。这个消息类型用于按字面编码
的消息体去匹配一个存在的消息格式。在许多情况下,它可能用于一种其他未定义
的消息类型。尽管 JMS 允许消息属性使用字节消息,但通常不会使用,因为这样
可能影响消息的格式。
3。11。1 清除消息体
Message 的clearBody 方法重设消息体的值为’空’ 的初始化消息值,这个值由消息类型的
由Session 提供的创建方法设置。清除消息体不会清除它的属性条目。
3。11。2 只读消息体
当消息被接收时,它的消息体是只读的。如果企图改变消息体,那么必须抛出
MessageNotWriteableException。如果消息体随后被清除,那么消息体的状态和新创建消息时
的空消息体的状态一样。
28 / 66
…………………………………………………………Page 29……………………………………………………………
3。11。3 由StreamMessage 和MapMessage 提供的转换
StreamMessage 和MapMessage 都支持相同的原始数据类型集合。
这些类型可以被显式地使用类型对应的方法来读写。它们也可以都作为对象被读写。例
如,调用MapMessage。setInt(“foo”;6)等价于MapMessage。setObject(“foo”;new Integer(6))。提
供两种形式是因为显式的方式对静态的编程更方便,但对象形式在编译时不知道类型时是需
要的。
StreamMessage 和MapMessage 都支持下面的转换表。
标记为大写的必须支持。其他的必须抛出 MessageFormatException。如果传入数值的
valueOf 方法的 String 是无效的,那么 String 到数值的转换必须抛出
java。lang。NumberFormatException 。
StreamMessage 和MapMessage 必须实现String 到布尔的转换,那和在Java 语言中定义
的Boolean 的valueOf(String)转换一样。
企图读取 null 值作为 java 的原始类型必须看作用 null 值调用原始类型对应的
valueOf(String)方法。由于char 不支持String 转换,因此企图读取null 值作为char 必须抛出
NullPointerException。
用名字获取还没有被设值的MapMessage 字段按照null 值处理。
如果 StreamMessage 好哦 BytesMessage 的读方法抛出 MessageFormatException 或
NumberFormatException,那么不能增加读指针所在的位置。随后的读必须能够通过重读数
据作为不同的类型而从异常中恢复。
用行类型写的值可能被读作列类型。
表3? 用于StreamMessage 和MapMessage 的转换
boolean byte short char int long float double String Byte''
boolean × ×
byte × × × × ×
short × × × ×
char × ×
int × × ×
long × ×
float × × ×
double × ×
String × × × × × × × ×
byte'' ×
3。11。4 用于非JMS 客户端的消息
很多企业消息系统支持自定义的 Stream 和/或 map 本地消息类型。尽管客户端可以使
用BytesMessage 来构造这种形式的本地消息,但JMS 为StreamMessage 和MapMessage 类
型提供了更加方便的API 。
例如,当客户端使用支持本地消息的JMS 提供商,且它希望发送既能被JMS 客户端又
能被本地客户端读取的map 消息时,它是由MapMessage。当消息被发送时,提供商将它转
换成本地格式。本地客户端然后就可以接收它。如果 JMS 提供商接收它,那么提供商将它
29 / 66
…………………………………………………………Page 30……………………………………………………………
转换回MapMessage。
即使实现使用新定义的消息的新 JMS 应用时,应用可以选择使用 StreamMessage 和
MapMessage 来保证非JMS 客户端能够读取消息。
如果JMS 客户端发送StreamMessage 或MapMessage,那么它必须被接收JMS 提供商转
换成一个等价的StreamMessage 或MapMessage。当在JMS 客户端间传递时,消息必须保持
它全部的格式。例如,作为MapMessage 发生的消息不能作为BytesMessage 消息被接收。
如果 JMS 提供商接收一个由本地客户端创建的消息,那么提供商应当将它尽力转换成
“最佳的”JMS 消息类型。例如,如果是本地流消息,那么它应当被转换成StreamMessage 。
如果转换不了,那么提供商总能够将它转换成BytesMessage。
3。12 JMS Message 接口的提供商实现
JMS 提供了一系列消息接口,这些接口定义了JMS 消息模型。它没有提供这些接口的实
现。
每个 JMS 提供商提供它自己的会话的消息创建方法的实现。这可以让提供商来使用满
足它需要的消息实现。
提供商必须能够从客户端接收不是它自己的消息实现。提供商可以不高效的处理外来消
息实现,但它必须处理。
当提供商处理外来消息实现时需要注意下面的例外情况。如果外来消息实现包含
JMSReplyTo 头字段,这个字段设置了外来地址实现,那么不要求提供商处理或保存这个头字
段的值。
JMS 消息接口提供了写/set 方法来设置消息体内和消息属性内的对象的值。所有的这些
方法必须复制它们输入的对象,然后放进消息中。输入对象的值可以是null,当获取时返回
null 。一个例外是 BytesMessage 不支持空流的概念,因此企图向他写 null 则必须抛出
java。lang。NullPointerException 。
JMS 消息接口提供读/get 方法来访问消息体和消息属性内的对象。所有的这些方法必须
返回要获取对象的拷贝。
4 JMS 公共工具
4。1 概述
本章描述了在PTP 和Pub/Sub 域间共?
小说推荐
- php程序设计简明教程(DOC格式)
- -Page 1-PHP 程序设计简明教程PHP 讲义 第 1 页 共 90 页-Page 2-目录序 4第一章 PHP 简介 6
- 最新章:第31章
- C语言实例教程(PDF格式)
- -Page 1-前 言Visual C+是开发运行于Windows 95和Windows NT环境下的Win32应用程序的可视化编程工具中最重要的成员之一,它为软件开发人员提供了完整的编辑、编译和调试工具和建立于Win32 API(ApplicationProgramming Interface)基
- 最新章:第143章
- 软件工程实践者的思想(PDF格式)
- -Page 1-大 道 至 简—软件工程实践者的思想周爱民(Aimingoo 著-Page 2-序2004 年 11 月初爱民(Aimingoo)第一次把他的书稿给我,我翻看了一下,第一反应讲的是感想。这不错,在技
- 最新章:第26章
- C语言游戏编程从入门到精通(PDF格式)
- -Page 1-Page 2-Page 3-Page 4-Page 5-Page 6-Page 7-Page 8-Page 9-Page 10-Page 11-Page 12-Page 13-Page 14
- 最新章:第4章
- Java编程思想第4版[中文版](PDF格式)
- -Page 1-Page 2《Thinking In Java》中文版作者:Bruce Eckel主页:http/BruceEckel.编译:Trans Bot主页:http/memberease~transbot致谢-献给那些直到现在仍在孜孜不倦创造下一代计算机语言的人们!指导您利用万维网的语言进
- 最新章:第295章
- JSP入门教程(DOC格式)
- -Page 1-jsp 入门教程0.0.1版权(c 2008 叮咚老菜鸟叮咚对文档的任何问题或建议,请给叮咚发邮件或留言。QQ:475784337QQ 群:51239192MSN:lingirl6@hotmail.EMAIL:lingirl6@hotmail.2008-02-28 20:05:061
- 最新章:第37章
- asp基础实用教程(DOC格式)
- 目 录一、关于ASP二、ASP的新功能三、创建ASP页四、使用脚本语言五、使用变量和常量六、使用集合七、ASP内建对象八、向浏览器发送内容九、包含文件十、访问数据库十一、调试ASP脚本十二、维护ASP应用程序的安全一、关于ASP Active Server Pages(ASP)是服务器端脚本编写环境
- 最新章:第17章
- SQL语言艺术(PDF格式)
- -Page 1-SQLSSQQLL语言艺术内容介绍本书分为12章,每一章包含许多原则或准则,并通过举例的方式对原则进行解释说明。这些例子大多来自于实际案例,对九种SQL经典查询场景以及其性能影响讨论,非常便于实践,为你数据库应用维护人员阅读。资深 SQL 专家 Stéphane Faroult倾力打
- 最新章:第27章
- oracle从入门到精通(PDF格式)
- -Page 1-Oracle 从入门到精通-Page 2-资源来自网络,仅供学习 Oracle 从入门到精通一、SQL 8
- 最新章:第37章