本文主要从代码来讲解从HelloWorld开始理解和学习JXTA。在这里我们要实现的是一个Peer如何发现对等组并加入,如果不存在,则创建。当然在这里的加入对等组是最简单的,没有加入任何认证。这样是不安全和不利于对PeerGroup管理的。不过我们在这里只是要了解一下Peer的加入对等组的过程。在这里我用到的是JXTA版本是2.4.1。
public class HelloWorld {
private PeerGroup netgroup = null;
private Enumeration ae = null; // 记录发现的对等体广告。
public static void main(String[] args) {
HelloWorld myapp = new HelloWorld();
myapp.startJxta();
System.exit(0);
}
public void startJxta() {
try {
netgroup = new NetPeerGroupFactory().getInterface();
} catch (PeerGroupException e) {
e.printStackTrace();
}
// 从NetPeerGroup获得发现服务
DiscoveryService hdisco = netgroup.getDiscoveryService();
ae = findPeerGroup(hdisco, "Name", "HelloWorld");
if (ae != null && ae.hasMoreElements()) {
System.out.println("找到HelloWorld对等组");
joinPeerGroup(netgroup, (PeerGroupAdvertisement) ae.nextElement());//找到目标对等组,加入
System.out.println("加入HelloWorld对等组成功!!!");
} else {
System.out.println("没有找到HelloWorld对等组,则创建,在创建中......");
createNewPeerGroup(netgroup, "HelloWorld", "HelloWorld,Inc");//没有找到目标对等组,创建
System.out.println("创建HelloWorld对等组成功!!!");
}
System.exit(-1);
}
private Enumeration findPeerGroup(DiscoveryService dis, String key,
String name) {
int count = 3; // 试图发现的最高次数
int timeout = 3000;
Enumeration advs = null;
// 循环直到我们发现helloWorld对等组或是直到我们达到了试图预期发现的次数。
while (count-- > 0) {
try {
// 第一次搜索对等体的本地缓存来查找helloWorld对等组通告。
// 通过NetPeerGroup组提供的发现服务发现"Name"属性为"helloWorld"的对等组
advs = dis.getLocalAdvertisements(DiscoveryService.GROUP, key,
name);
// 如果发现helloWorld对等组通告,该方法完成,退出循环。
if ((advs != null) && advs.hasMoreElements()) {
break;
}
// 如果我们没有在本地找到它,便发送发现远程请求。
// 参数依次为要查找的对等体ID,为空时不以此为发现条件;发现的通告类型,取值还有PEER,和ADV;
// 要发现的通告属性名称;属性取值;需获取的最大通告数量;发现监听器
dis.getRemoteAdvertisements(null, DiscoveryService.GROUP, key,
name, 1, null);
// 线程延时一下等待对等体內该发现请求。
try {
Thread.sleep(timeout);
} catch (InterruptedException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return advs;
}
// 如果不存在目标对等组,则创建目标对等组
private PeerGroup createNewPeerGroup(PeerGroup netpg, String name,
String desc) {
PeerGroup result = null;
try {
// 创建一个新的对等组helloWorld
// 通过NetPeerGroup获得一个一般对等组的通告。
ModuleImplAdvertisement implAdv = netpg
.getAllPurposePeerGroupImplAdvertisement();
// 通过NetPeerGroup创建一个新的对等组,JXTA会自行发布该对等组通告,
// 参数依次为对等组ID,通告,组名,描述
result = netpg.newGroup(IDFactory.newPeerGroupID(), implAdv, name,
desc);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
// 加入对等组
private PeerGroup joinPeerGroup(PeerGroup netpg,
PeerGroupAdvertisement pgAdv) {
PeerGroup result = null;
try {
// 加入该对等组,由于该通告已经发布,JXTA不会再行发布。
result = netpg.newGroup(pgAdv);
} catch (PeerGroupException e) {
e.printStackTrace();
}
return result;
}
}
当我们第1次运行时,会跳出出配置UI,我们在这里只要输入PeerName和Password,再点击OK,就可以啦。
运行代码,我们可能发现,只是在后台看到一些重要的过程的输入,到底有没有加入,Peer,PeerGroup的信息也没有。会有点不爽,不过在这里我要讲的这个过程。没有打印出Peer和PeerGroup的信息。因为发现资源,我们会用到DiscoveryService,后续会慢慢给出这些代码。
分享到:
相关推荐
描述中的"JXTA的 HelloWorld程序,教你如何初次学习JXTA"进一步确认了这是一个面向初学者的教学资源。通过分析这个Hello World程序,我们可以了解JXTA的基本用法,包括设置对等节点,创建通道,发送和接收消息等步骤...
《JXTA与MyJXTA 2.4.1:HelloWorld教程详解》 ...通过深入学习和实践这个HelloWorld教程,开发者不仅能掌握JXTA和MyJXTA的基础,还能建立起对P2P网络编程的直观理解,为后续开发更复杂的P2P应用程序打下坚实的基础。
总结,"jxta.rar_jxta"这个压缩包可能是一个学习JXTA P2P编程的资源,其中的"HelloWorld"实例将引导用户熟悉JXTA的基本概念和操作流程,涉及JXTA的初始化、服务广告、发现、连接建立以及数据交换等核心功能。...
jxta规范_英文原版 学习jxta必备
**精通JXTA与JXTAShell:探索P2P技术新境界** JXTA(Java eXtensible Networking Architecture)是由Sun Microsystems开发的一种开放源码的对等网络(P2P)平台,旨在促进设备之间的互操作性,提供一种分散式计算...
jxta.jar p2p jxta.jar p2p jxta.jar p2p
通过这些实例,读者可以学习到如何使用JXTA API来实现设备之间的通信,以及如何设计和实现P2P服务。 ### JXTA管道与安全 JXTA管道是其通信模型的核心部分,分为推送管道(Push Pipe)和请求管道(Request Pipe)。...
3. **JXTA API**:学习JXTA API是开发的关键。API提供了创建、管理和交互对等节点、对等组、管道和服务的方法。这包括对等身份(PeerId)、对等组身份(PeerGroupId)、广告(Advertisements)和查询(Queries)等...
压缩包中的"jxta例程"很可能包含了以上这些功能的代码实例,每个例子都有详细的注释和说明,帮助开发者逐步学习和实践JXTA编程。通过这些例程,你可以理解JXTA的架构,学习如何建立P2P网络,编写服务发布和发现的...
通过这些子文件,开发者可以逐步掌握JXTA的各个方面,从基本的网络设置到复杂的服务交互。每个rar文件都是一个学习JXTA的宝贵资源,可以从中提取出代码、文档甚至完整的示例应用,以加深对P2P编程的理解和实践。在...
从网络发现到安全通信,再到用户界面的构建,每个库都在其中扮演着至关重要的角色,共同构成了P2P应用的基石。开发者可以借助这些工具,实现创新的、去中心化的应用,以满足日益增长的网络协作和资源共享需求。
JXTA 2.5 是该技术的一个版本,包含了完整的文档、源代码以及教程,为开发者提供了全面的学习和开发支持。 1. **JXTA 概述** JXTA 是一种跨平台的框架,它利用P2P技术构建分布式网络应用,允许网络中的各个节点...
### JXTA学习手册:P2P与Java技术解析 #### 一、P2P技术概览 近年来,分布式计算领域发展迅速,新技术层出不穷。其中,P2P(Peer-to-Peer)技术作为一项重要的技术趋势,使得用户可以直接连接到其他用户的计算机上...
JXTA(Java eXtensible Peer-to-Peer Technology Platform)是Oracle公司开发的一个开源、跨平台的P2P(Peer-to-Peer)框架,它为构建基于对等网络的应用程序提供了一组标准协议和API。JXTA 2.7是这个框架的一个版本...
jxta运行环境所需要的所有jar包 /files/JXTA_Demo/lib/jxta.jar /files/JXTA_Demo/lib/beepcore.jar /files/JXTA_Demo/lib/cryptix-asn1.jar /files/JXTA_Demo/lib/cryptix32.jar /files/JXTA_Demo/lib/jxtaptls.jar...
本资料包“p2p平台jxta学习资料”旨在帮助你深入理解和实践P2P编程,特别关注JXTA技术。 1. **JXTA简介**:JXTA是一个基于标准的、跨平台的P2P框架,它定义了一组协议,用于在P2P网络中进行设备发现、通信和资源...
书中涵盖了从基础到高级的JXTA开发技术,适合有Java背景的开发者学习和参考。 "JXTA-Java P2P网络编程技术"这本书可能专注于JXTA在Java编程中的实际应用,它可能会详细解释如何利用JXTA的API来设计和实现P2P应用...
在学习JXTA时,你可能会遇到以下核心概念: 1. **Peer Group**:它是JXTA中的基本组织单元,将具有相同特性的节点分组在一起,共享相同的配置和服务。 2. **Advertisements**:这些是描述资源或服务的XML文档,用于...
JXTA Messenger 是基于JXTA技术实现的一种点对点聊天应用,可以作为学习和理解JXTA工作原理的一个实例。 **JXTA 技术核心概念** 1. **对等节点(Peers)**: 在JXTA网络中,每个参与者都是平等的,称为对等节点。...