在GT4 Client端EndpointReferenceType的标准序列化方法

王朝java/jsp·作者佚名  2006-01-09
宽屏版  字体: |||超大  

很久没有写东西了,这段时间忙得不可开交,心得也一大堆,比较散,所以整体的心得还是过段时间再写吧。

不过这个小问题还是比较独立的。

一句磨耳朵的话还要再提一遍,GT3实现Grid Service的思想是有状态的Service,而GT4是无状态的Service+有状态的Resource。这一点在Client端看似变化不大,但有个问题必须注意!在GT3中Client端都是通过Service的Handle访问Service;而在GT4中是通过一个类型为EndpointReferenceType的对象(通常我定义此变量名为epr,此后提epr,即指EndpointReferenceType对象)访问Service和Resource;EndpointReferenceType是WS-Addressing标准定义的一个类型,里面包含了Service的Handle及Resource的鉴别等信息。

Handle是字符串类型,很容易输出和保存。而EndpointReferenceType是一个复杂的类型,当创建一个Resource后,服务端会返回一个epr,通过这个epr对Resource进行读取,修改等操作。但client端程序退出前如果不想销毁Resource(以后还要用),epr将丢失,而epr的丢失将导致Resource的丢失。因此必须保存epr,保存的方法呢?在所有已发布的globus文档及示例代码中均没有考虑这个问题(都是用过Resource后在本程序中就销毁Resource),就这个问题我询问了Globus.org,感谢Ben Clifford和Jarek的回答,为了保证保存后的epr的通用性,最好把EndpointReferenceType Object输出为语言无关的XML文档,以后的globus文档中他们会讲解这个标准的保存epr的方法,也许只是一个建议,

也许是提供一个工具。

具体的做法,我就先说明了,

screen.width/2)this.width=screen.width/2" vspace=2 border=0。

输出epr时,使用org.globus.wsrf.encoding.ObjectSerializer,

读入epr时,使用org.globus.wsrf.encoding.ObjectDeserializer。

如想参看代码,可以访问sourceforge.net,阅读gcsf项目的最新的QueuingServiceClient.java,测试平台:RedHat 9 , Globus Toolkit 3.9.3

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有