本文主要从代码来讲解从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的初始化、服务广告、发现、连接建立以及数据交换等核心功能。...
- **Hello World示例**:最简单的入门程序,展示了如何创建一个基本的JXTA Peer。 - **本地配置示例**:演示如何管理和配置本地Peer的设置。 #### 四、JXTA中的关键技术点 - **ID(标识符)**: 用于唯一标识Peer或...
7. **社交网络应用**:HelloWorld goes mobile是将社交网络功能融入安卓应用的一个实例,可以学习如何集成社交API,实现登录、发布动态等功能。 8. **聊天程序**:如jChat,它演示了如何实现实时通讯功能,包括网络...
17.3 实例——分布式的HelloWorld 260 17.4 小结 264 第18章 Java消息服务 265 18.1 消息系统和JMS 265 18.1.1 JMS API 265 18.1.2 点对点消息模式 266 18.1.3 发布者/订阅者模式 267 18.1.4 同步和...
6. **社交网络应用**:HelloWorld goes mobile演示了如何构建基本的社交网络应用,包括登录、数据交换和用户界面设计。 7. **聊天应用**:jChat4android展示了如何实现即时通讯功能,包括消息传输、在线状态管理和...
Java中的JExcelAPI(简称JXTA)是一个用于读写Microsoft Excel文件的开源库,而题目中提到的“java基于jxl的excel下载”实际上可能是笔误,因为正常情况下我们用JExcelAPI来读写Excel,而不是下载。不过,我们可以...