Peer Group的创建和加入
JXTA中节点Peer可以形成自组织的组,即Peer Group (or Self-Organized Virtual Network Domain)。一个Peer Group代表了一组有共同的兴趣或者使用相同的策略的动态节点集。Peer Group由Peer Group ID唯一标识。Peer Group可以在应用程序中动态的创建。通常创建一个Peer Group主要出于以下原因[1]:
·创建一个受保护的域,用来安全地交换资源和内容
·创建一个域环境(scoping environment)
·创建一个可监控环境(包括流量监控,审计等)
Suis架构中的订阅组主要是用来创建一个域环境,从而使组内的Advertisement仅在本组内可见。JXTA提供了创建和管理Peer Group的方法,至于什么时候,为什么创建Peer Group则由上层应用程序决定。下面将说明如何在JXTA中创建一个Peer Group,以及如何加入一个Peer Group。
创建Peer Group Advertisement
要创建一个PeerGroup首先需要创建该PeerGroup的通告。要创建一个Peer Group Advertisement又首先需要获得一个标准的PeerGroup Implementation Advertisement,即GroupImplAdv,可以通过下面的方法获得。
ModuleImplAdvertisement customGroupImplAdv =
npg.getAllPurposePeerGroupImplAdvertisement();
其中npg表示JXTA平台的NetPeerGroup。通过getAllPurposePeerGroupImplAdvertisement()方法得到的实现通告所指的实现可以用于创建任何仅依赖于标准PeerGroupService的PeerGroup。(当需要使用自定义服务时也可先用该方法得到通用的实现通告,然后通过setModuleSpecID()等方法对通用通告做一些修改得到所需的自定义实现的通告)
获得了GroupImplAdv后就可以使用AdvertisementFactory创建GroupAdv了。
PeerGroupAdvertisement customGroupAdv = (PeerGroupAdvertisement)
AdvertisementFactory.newAdvertisement(PeerGroupAdvertisement.getAdvertisementType());
然后需要通过customGroupAdv.setPeerGroupID(CUSTOM_PEERGROUP_ID)对PeerGroupID进行设置,通过 customGroupAdv.setModuleSpecID(customGroupImplAdv.getModuleSpecID());设置 ModuleSpecID,通过customGroupAdv.setName("Custom Peer Group")设置PeerGroup的名称等以获得符合要求的GroupAdv。PeerGroupAdvertisement还有很多方法,这里不再赘述,详见JXSE doc。PeerGroupAdvertisement创建之后还可以根据需要在npg中publish或者remotePublish。
需要注意的是对于AdvertisementFactory所创建的PeerGroupAdvertisement,必须使用setPeerGroupID对 ID进行设置,用setModuleSpecID对实现模块进行关联,否则将无法通过该通告来创建一个PeerGroup。 customGroupAdv.setModuleSpecID(customGroupImplAdv.getModuleSpecID());
而不设置其他诸如PeerGroup Name,Peer Group Description等属性依然可以通过该通告创建PeerGroup。
创建Peer Group
这里仅讨论创建标准Peer Group(Standard Peer Group)的情况,对于具有自定义Group Service的Peer Group参见《JXSE Tutorials 2.5》中的custom group service。另外,在《JXTA Programmer Guider》的Chapter 17: Password Protected Peer Group中给出了创建带有认证的Membership Service的Peer Group的例子。
创建一个Peer Group,首先需要取得该Peer Group的ADV。如是已有的组,则可以通过其父组的Discovery Service来获取要创建的组的Peer Group ADV。若是一个全新的组,则应首先创建该组的Peer Group ADV。上面已经介绍了创建一个标准Peer Group ADV的方法。现假设已有待创建的组的Peer Group ADV,要创建一个NetPeerGroup的子组。可以通过下面语句实现。
PeerGroup cpg = npg.newGroup(customGroupAdv);
cpg.startApp(new String[0]);
这里,通过PeerGroup接口的newGroup(Advertisement pgAdv)方法实例化了customGroupAdv所表示的组。然后用startApp()完成组的所有初始化。startApp是一个继承自 Module接口的方法(PeerGroup继承了Service,Service继承了Module),该方法用于完成一个模块剩余的初始化工作,当 startApp()调用结束时,该模块就应该处于正常工作状态。对于用户自定义的组,通过startApp()可以完成自定义模块的启动。对于标准组 (Standard Peer Group),由于只有标准服务和模块,而这些诸如Endpoint Service,Rendezvous Service,Resolver Service, NoneMembership Service等标准Module属于JXTA的Privileged Module,会自动完成加载和初始化,所以对于标准组调用startApp()不是必须的。至此就完成了组的创建(实例化),现在可以通过 cpg.getDiscoveryService()等来获得cpg的各种标准对等组服务了。
加入Peer Group
这里所讨论的加入PeerGroup仅对实现了Membership Service的对等组有意义。对于标准对等组,由于其使用了NoneMembershipService,所以对组内成员没有身份认证功能,其“加入” 也就没有意义,通过创建PeerGroup的实例实际上就完成了加入对等组。
对于实现了Membership Service的对等组(NoneMembershipService除外),加入对等组实际上就是获得组内的身份标识,使服务或者应用程序能够根据这种标识来判断Peer用户所具有的权限或者能力。通常通过以下两步骤来加入对等组。
·申请:将AuthenticationCredential提供给Membership Service,获得Authenticator。
Peer 给Membership Service提供一个最初的信任书AuthenticationCredential,Membership Service根据这个信任书来确定用哪种方式认证Peer的身份。如果服务允许Peer所请求的机制,就返回一个合适的认证者对象 Authenticator。
·加入:当Peer得到Authenticator后,它就会基于自己所有的信息(如口令等)调整Authenticator,然后加入对等组[2]。代码示例[3]:
AuthenticationCredential authCred = new AuthenticationCredential(cpg,null,null);
MembershipService membership = cpg.getMembershipService();
Authenticator auth = membership.apply(authCred);
completeAuth(auth,login,password);
if (auth.isReadyForJoin()){
membership.join(auth);
}
其中completeAuth为用户定义的函数,用来完成authenticatiom。
转自:http://technica.blogbus.com/logs/15908922.html
分享到:
相关推荐
本文将深入探讨如何在JXTA环境中创建自定义的广告,以便在P2P网络中发布和查找特定信息。 首先,我们需要了解JXTA的基本概念。JXTA 使用一种称为“边缘计算”或“对等计算”的模式,其中每个网络参与者既是服务提供...
- **ch03**:可能包含关于基础概念和设置的代码示例,如创建并启动边缘设备,加入或创建边缘网络。 - **ch04**:可能涉及广告和发现机制,如何发布服务或资源,以及如何查找和响应其他设备的广告。 - **ch05**:...
在Windows XP及其后续版本中,Microsoft引入了一套名为“对等组”(Peer Group)的技术,用于简化在P2P环境中创建、管理和共享资源的过程。本文将详细介绍如何利用Microsoft的对等技术来创建、打开和删除对等组,...
"JXTA-Java-P2P网络编程技术"这个主题可能涵盖了如何使用Java和JXTA库创建P2P应用的具体实践。这可能包括以下几个方面: 1. **设置开发环境**:安装JXTA SDK,配置开发工具(如Eclipse),并创建项目。 2. **理解...
1. **初始化节点**: 创建并配置JXTA PeerGroup,它是JXTA节点的主要工作区,包含所有相关的服务和管道。 2. **创建服务**: 定义服务接口,实现服务逻辑,并发布广告以让其他节点知道此服务的存在。 3. **发现服务*...
这个操作不仅构建了WorldGroup和相关服务,还为用户默认创建了NetGroup。此过程是系统初始化的关键,后续章节会更详细地分析其内部机制。 3. 对等平台的主要类分析 平台类构成了一复杂的继承层次,反映了不同层级...
其中,关键的类如`PipeService`用于创建和管理数据传输管道,`AdvertService`用于发布和查找服务或资源广告,以及`PeerGroup`作为P2P网络的基本组织单元,管理着网络中的其他组件。 其次,JXTA的发布/订阅模型是其...
P2P(Peer-to-Peer)网络是一种分布式网络架构,与传统的C/S(Client/Server)模式不同,P2P模式下的每一个节点既是客户端也是服务器,能够直接与其他节点进行通信和数据交换,而无需通过中心服务器中转。...
使用"jxse-2.5"这个Jar包,开发者能够创建出分布式、自我组织、去中心化的应用,适用于文件共享、协同工作、物联网(IoT)场景等多种用途。通过深入理解和熟练运用JXTA的API,开发者可以构建出高效、可靠且灵活的P2P...
节点之间的连接通常是短暂且可变的,这使得P2P网络能够适应节点频繁加入和离开的情况。 ##### 2.3 节点自制 每个P2P网络节点都是自治的,这意味着它们可以根据自身的需求和能力来决定参与网络的方式。例如,节点...
在设计P2P软件时,还需要考虑到网络节点之间的连接稳定性、数据的冗余备份、节点的动态加入与退出等实际问题。为了提高网络效率和用户体验,设计者需要采取有效策略来优化资源的分布和查找算法,例如通过超级节点...
- **对等组**(PeerGroup):组织Peer并发布特定服务的方式,可以创建、加入和退出。 - **端点**(Endpoint):Peer的地址,不一定是物理地址,允许变化。 - **管道**(Pipe):Peer间的虚拟通道,通过网关Peer提供...
- com.sun.jxta.peergroup:包含了与P2P群组相关的类,如群组创建、管理等。 - com.sun.jxta.protocol:协议实现,包括P2P通信的各种协议接口和实现。 - com.sun.jxta.config:配置管理,用于读取和处理JXTA的...
7. **API使用**: 开发者可能需要熟悉JXTA提供的API,如`net.jxta.platform`、`net.jxta.document`和`net.jxta.peergroup`等包,这些API提供了构建P2P应用所需的各种工具和接口。 8. **源代码结构**: 通常,源代码包...
8. **在主程序中实现**:在实际的Java程序中,开发者会使用JXTA的API来创建并配置一个对等组(PeerGroup),然后在这个组内执行发现操作。例如,你可以创建一个`PipeService`实例来监听和响应来自其他节点的发现请求...
JXTA的核心构件包括对等点(peer)、对等组(peergroup)、服务(Service)、管道(Pipe)和信息(Message)。对等点是指能够实现JXTA协议的实体,例如个人电脑、传感器或者移动通信设备。对等组是指具有共同目的的...
### R1762_R2632_R2700 RGNOS10.2配置指南_第五部分 路由协议配置指南 #### 一、协议无关配置...**5.18.7 配置peergroup** ```config neighbor PEER-GROUP peer-group neighbor 192.168.1.2 peer-group PEER-GROUP ```...
此资源包含三部分: 1、jxse-shell-2.5.zip 2、jxse-shell-doc-2.5.tar.tar 3、jxse-shell-src-2.5.tar.tar...whoami Display information about this peer or the current peergroup xfer Send a file to another peer