JXTA有两个重要的对等级(PeerGroup):WorldGroup和NetPeerGroup。WorkdGroup是系统级起始 PeerGroup,任何其他 PeerGroup 均是其后代。NetPeerGroup 是用户级的默认PeerGroup,是WorldGroup的后代;同时所有Peer自行创建的PeerGroup也是NetPeerGroup的后代。所有的Peer都被初始化成该组(NetPeerGroup)的成员来连接到P2P虚拟网中,新的PeerGroup可以在这个默认组下创建。因此加入协作学习P2P网络中的节点(Peer)必须先加入NetPeerGroup,然后再创建自己的协作学习组。
对等组(PeerGroup)代表一组具有共同兴趣的对等点,最典型的PeerGroup是能提供一套通用服务协同工作的Peer集合。Peer在加入PeerGroup后,才能获得相关服务和与其他Peer交互。根据上述对等组的定义,我们把具有共同学习目标和相似学习兴趣的节点自动分为一个协作学习组,根据以行政区域为单位再分为几个小组,小组人数为6人,然后每组根据计算机的性能级别自动选出一个超级节点(Rendezvous peer)。
对等点的身份确定为Rendezvous peer时,再执行以下过程后,就组建了本地域的协作学习组。组建对等组的过程如下:
(1) 获得组实施广告(ModuleImpl Advertisement)。
(2) 建立组的API,建立组。
(3) 发布新组的远程广告(remotePublishgroupadvertisement)。
组建对等组的主要程序如下:
Publish class PublishGroup
{
static PeerGroup myGroup = null; //定义新组变量
Private DiscoveryService discoSvc; //定义查找服务
//启动JXTA服务,获得NetPeerGroup组变量和建立查找服务
private void startJxta()
{
myGroup = PeerGroupFactory.newNetPeerGroup();
discoSvc = myGroup.getDiscoveryService();
}
//建立对等组(www.daowen.com)
private PeerGroup createGroup()
{
PeerGroupAdvertisement adv;
ModuleImplAdvertisement imolAdv = myGroup.
getAllPurposePeerGroupImplAdvertisement(); //获得对等组实施广告
//调用建立组的API,建立Anti-spam组
PeerGroup aspg = my Group.newGroup(null, //预分配的组ID
implAdv, //对等组实施广告
“Collaborative-LearningGroup”, //对等组的名称
“Collaborative-LearningGroup group adv”); //对等组的描述信息
//发布新对等组的广告
adv = aspg.getPeerGroupAdvertisement();
discoSvc.Publish(adv);
discoSvc.remotePublish(adv,DiscoveryService.GROUP);
}
}
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。