欢迎来到天天文库
浏览记录
ID:47037153
大小:49.00 KB
页数:7页
时间:2019-07-03
《JXTA P2P编程技术例程二》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、JXTA,P2P编程技术例程(2)作者:yxiong2000
2、日期:2004-07-30
3、字体:大中小创建与发布通告就如我们早先说的那样,JXTA虚拟网络依靠JXTAID去鉴别网络资源。而这些资源的发现是通过通告。net.jxta.id包包含了ID类,同事包含了创建各种ID的工厂(factory)。在JXTA中,net.jxta.document.Document是一个数据通用容器。一个在JXTA中的文档被MIME媒体类型的内容所定义。这样,文档就类似于HTTP流(stream。JXTA并不尝试去解释文档的内容:这个内容是一个应用层协议的一部分)。一个通告是由一个类似于X
4、ML结构化文档的可嵌套的多层元素组成的StructuredDocument,它可以使一个文档在它的数据没有物理表示(physicalrepresentation)的时候被操作。就如和其他任何StructureDocument一样,一个通告可以被XML或者简单文本格式表所表示。一个通告包括它所要通告的资源的ID,通告的类型,以及过期的时间绝对值。JXTAAPI提供一个方便的工厂,AdvertisementFactory,来创建各种通告类型。Listing16.3说明了一个ModuleClassAdvertisement通过这个工厂的创建。注意ModuleClassID被加入
5、到通告中的方式)Listing16.3CreatingandAdvertisingaModuleClassprivatevoiddoAdvertise(){ModuleClassAdvertisementclassAd=(ModuleClassAdvertisement)AdvertisementFactory.newAdvertisement(ModuleClassAdvertisement.getAdvertisementType());ModuleClassIDclassID=IDFactory.newModuleClassID();classAd.setModul
6、eClassID(classID);classAd.setName(ServiceConstants.CLASS_NAME);classAd.setDescription("Aprimenumbercrunchingservice.");try{discoSvc.publish(classAd,DiscoveryService.ADV);discoSvc.remotePublish(classAd,DiscoveryService.ADV);System.out.println("Publishedmoduleclassadv.");}catch(IOExceptione
7、){System.out.println("Troublepublishingmoduleclassadv:"+e.getMessage());}JXTAnet.jxta.discovery.DiscoveryService是一个NetPeerGroup提供的组服务(groupservice)。它提供发布发现本科与远程2种模式。本地模式在Peer本地的缓冲中去发现通告,本地发布就是让通告放入本地的缓冲中。远程就是在整个peer组中去发现与发布。因此,请求消息通过JXTA虚拟网络在我们早先描述的协议的情况下进行传播,在它们到底的时候就对这些请求的进行回应。因此,远程发现是一
8、个异步的过程,找到在网络上所要的通告类型也需要一定时间。Listing16.3说明ModuleClassAdvertisement的远程与本地2种发布方式。类型前面的过程,我们通过IDFactory类创建一个ModuleSpecID,并从AdvertisementFactory获得与它相应的通告。(见listing16.4)Listing16.4CreatingaNewModuleSpecAdvertisementModuleSpecAdvertisementspecAd=(ModuleSpecAdvertisement)AdvertisementFactory.newA
9、dvertisement(ModuleSpecAdvertisement.getAdvertisementType());ModuleSpecIDspecID=IDFactory.newModuleSpecID(classID);specAd.setModuleSpecID(specID);specAd.setName(ServiceConstants.SPEC_NAME);specAd.setDescription("Specificationforaprimenumbercrunchingservice");specAd.
此文档下载收益归作者所有