62 / 66
…………………………………………………………Page 63……………………………………………………………
stockTime = message。getLong(〃Time〃);
如果客户端需要得到 MapMessage 的元素列表,那么它可以使用
MapMessage。getMapNames 方法。
9。4。7 创建StreamMessage
与MapMessage 类似,应用可以发送由按序写入消息的不同字段组成的消息,每个字段
都是原始数据类型。使用StreamMessage 来实现。下面的原始类型赋给股票报价消息的每一
项。
z 股票订价名称——String
z 当前的值——double
z 订价时间——long
z 最后更新——double
z 股票信息——String
客户端可能只对某些消息字段感兴趣,但在使用StreamMessage 的情况下,客户端必须
按顺序读并暗地抛弃每个字段。
在下面的例子中,已经设置了下面字段的值:
String stockName; /* Name of the stock */
double stockValue; /* Current value of the stock */
long stockTime; /* Time of the stock update */
double stockDiff; /* +/hange in the stock quote */
String stockInfo; /* Information on this stock*/
StreamMessage message;
/* Create message */
message = session。createStreamMessage();
下面的元素必须按照它们被读取的顺序写入StreamMessage 。注意,它们不是单独命名
的属性,和MapMessage 中一样。
/* Set data for message */
message。writeString(stockName);
message。writeDouble(stockValue);
message。writeLong(stockTime);
message。writeDouble(stockDiff);
message。writeString(stockInfo);
9。4。8 解包StreamMessage
StreamMessage 的元素必须按照写入的顺序被读取。
String stockName; /* Name of the stock quote */
double stockValue; /* Current value of the stock */
long stockTime; /* Time of the stock update */
double stockDiff; /* +/hange in the stock quote */
String stockInfo; /* Information on this stock */
stockName = message。readString();
63 / 66
…………………………………………………………Page 64……………………………………………………………
stockValue = message。readDouble();
stockTime = message。readLong();
stockDiff = message。readDouble();
stockInfo = message。readString();
9。4。9 创建ObjectMessage
股票信息可以以特殊的 StockObject 对象的形式被发送。这个对象然后作为
ObjectMessage 的消息体被发送。ObjectMessage 可以用于发送java 对象。
使用那些StockObject 实现中互不重复的方法来设置这些值。例如,StockObject 可以有
设置不同数据值的方法。使用StockObject 的应用可能看起来类似如下代码:
String stockName; /* Name of the stock quote */
double stockValue; /* Current value of the stock */
long stockTime; /* Time of the stock update */
double stockDiff; /* +/hange in the stock quote */
String stockInfo; /* Information on this stock */
/* Create a StockObject */
StockObject stockObject = new StockObject();
/* Establish the values for the StockObject */
stockObject。setName(stockName);
stockObject。setValue(stockValue);
stockObject。setTime(stockTime);
stockObject。setDiff(stockDiff);
stockObject。setInfo(stockInfo);
为了创建ObjectMessage,将StockObject 传入消息,你将按下面的方式来实现:
/* Create an ObjectMessage */
ObjectMessage message;
message = session。createObjectMessage();
/* Set the body of the message to the StockObject */
message。setObject(stockObject);
9。4。10 解包ObjectMessage
为了解包ObjectMessage,使用ObjectMessage。getObject 方法来得到对象。一旦对象被
取出,客户端应用使用与对象类型匹配的方法从对象中取出数据。
StockObject stockObject;
/* Retrieve the StockObject from the message */
stockObject = (StockObject)message。getObject();
/* Extract data from the StockObject by using StockObject methods */
String stockName; /* Name of the stock quote */
double stockValue; /* Current value of the stock */
long stockTime; /* Time of the stock update */
double stockDiff; /* +/hange in the stock quote */
64 / 66
…………………………………………………………Page 65……………………………………………………………
String stockInfo; /* Information on this stock */
stockName = stockObject。getName();
stockValue = stockObject。getValue();
stockTime = stockObject。getTime();
stockDiff = stockObject。getDiff();
stockInfo = stockObject。getInfo();
10 问题
10。1 已解决的问题
10。1。1 JDK1。1。x 兼容性
JMS 兼容JDK1。1。x 。
10。1。2 分布式Java 事件模型
一般情况下,JMS 可以被用作通知服务;但是它没有定义java 事件的分布版本。
实现分布式Java 事件的一个替代方案是将事件作为JavaBean 通过JMS 透明地分发它,
这种分发对事件的生产者和监听器bean 是透明的。
10。1。3 可以合并JMS 的两个域PTP 和Pub/Sub 吗?
尽管有许多类似点,提供分离的域似乎仍然是重要的。
这意味着供应商不必支持超出域的那些工具,且产品完全支持一个域会使客户端代码有
更好的移植性(相对于对合并域的子集做比较少的支持)。
10。1。4 JMS 应当指定一个JMS JavaBean 集合吗?
JMS 是一个底层API ,和其它的Java 底层API 一样,它不直接作为JavaBean 出现。
10。1。5 与CORBA 通知服务对齐
通知服务增加了过滤、转发保证语义、永久连接和对 CORBA 事件服务的事件网络的组
装。它从CORBA 消息服务得到它的转发保证语义(这个服务定义了异步CORBA 方
小说推荐
- 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章