`
cuizhenfu#gmail.com
  • 浏览: 67552 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Jxta初始化过程(一)

阅读更多
本文使用Jxta的版本为2.5_rc1

Jxta的初始化比较简单,一般都是实例化一个NetworkManager对象,并调用它的startNetwork方法。下面我们来看看背后发生的事。
  1. 实例化NetworkManager
  2. 调用NetworkManager.startNetwork
首先来看NetworkManager的构造函数,同样比较简单,包括一些类私有变量的赋值(instanceName 、mode 、instanceHome ),同时调用configure方法根据mode参数(目前支持预定义的mode类型包括:ADHOC、EDGE、RENDEZVOUS、RELAY、RENDEZVOUS_RELAY、PROXY、SUPER,当然我们可以在此基础上进一步定制)对节点进行配置。这些不是本文所关心的。
java 代码
 
  1. /** 
  2.  * Creates NetworkManger instance. 
  3.  * At this point, alternate Infrastructure PeerGroupID maybe specified, as well as a PeerID. if neither are 
  4.  * specified, the default NetPeerGroupID will be used, and a new PeerID will be generated. Also note the default 
  5.  * seeding URIs are the to development. Alternate values must be specified, if desired, prior to a call to {@link #startNetwork} 
  6.  * 
  7.  * @param mode         Operating mode  the node operating {@link ConfigMode} 
  8.  * @param instanceName Node name 
  9.  * @param instanceHome instance home is a uri to the instance persistent store (aka Cache Manager store home) 
  10.  * @throws IOException if an io error occurs 
  11.  */  
  12. public NetworkManager(ConfigMode mode, String instanceName, URI instanceHome) throws IOException {  
  13.     this.instanceName = instanceName;  
  14.     this.mode = mode;  
  15.     this.instanceHome = instanceHome;  
  16.     configure(mode);  
  17. }  
那么下面我们来看一下NetworkManager.startNetwork到底做了哪些操作
相对于以前的版本(例如2.4.1),NetworkManager这个类是在2.5_rc1(2.5_beta1应该也有,这个没有查过)开始加入的,原来需要我们手工处理的(例如发现或创建NetPeerGroup,请参考2.4.1的相关文档)现在转由这个类自动实现,下面我们来看一下这个实现过程
java 代码
 
  1. /** 
  2.  * Creates and starts the JXTA infrastructure peer group (aka NetPeerGroup) based on the specified mode 
  3.  * template. This class also registers a listener for rendezvous events. 
  4.  * 
  5.  * @return The Net Peer Group 
  6.  * @throws net.jxta.exception.PeerGroupException 
  7.  *                             if the group fails to initialize 
  8.  * @throws java.io.IOException if an io error occurs 
  9.  */  
  10. public synchronized PeerGroup startNetwork() throws PeerGroupException, IOException {  
  11.     if (started) {  
  12.         return netPeerGroup;  
  13.     }  
  14.   
  15.     // create, and Start the default jxta NetPeerGroup  
  16.     NetPeerGroupFactory factory = new NetPeerGroupFactory(config.getPlatformConfig(), instanceHome);  
  17.     netPeerGroup = factory.getInterface();  
  18.   
  19.     if (configPersistent) {  
  20.         config.save();  
  21.     }  
  22.   
  23.     rendezvous = netPeerGroup.getRendezVousService();  
  24.     rendezvous.addListener(this);  
  25.     started = true;  
  26.   
  27.     return netPeerGroup;  
  28. }  
这个方法返回的就是NetPeerGroup,通常我们下一步的工作就是用这个NetPeerGroup来创建子对等组供我们进一步使用。
首先判断Jxta网络是否已经启动,如果已经启动,那么netPeerGroup肯定已经初始化,直接返回即可。
java 代码
  1. if (started) {  
  2.     return netPeerGroup;  
  3. }  
接着创建并启动默认的jxta NetPeerGroup,这部分是我们下面要说的重点,这里先略过(下一篇文章会讲),我们先跳到下面的部分。
java 代码
  1. // create, and Start the default jxta NetPeerGroup  
  2. NetPeerGroupFactory factory = new NetPeerGroupFactory(config.getPlatformConfig(), instanceHome);  
  3. netPeerGroup = factory.getInterface();  
是否将当前的配置持久化,如果需要持久化(例如我们在预定义的那几种模式的基础上作了自定义),那么调用config.save(),将配置持久化到硬盘上(该部分内容会令开帖子叙述),持久化的配置可以直接从硬盘加载。
java 代码
  1. if (configPersistent) {  
  2.     config.save();  
  3. }  
为集合点注册监听器,置Jxta网络为启动状态并返回NetPeerGroup实例
java 代码
  1. rendezvous = netPeerGroup.getRendezVousService();  
  2. rendezvous.addListener(this);  
  3. started = true;  
  4.   
  5. return netPeerGroup;  

分享到:
评论

相关推荐

    jxta-shell-src-2.3.4.rar_JXTA Shell 2.5_r_java shell_jxta_jxta s

    源码中包含了如何加载和解析这些配置的细节,这对于理解JXTA网络的初始化过程非常有帮助。 6. 故障排查与调试 通过分析JXTA Shell的源码,开发者可以学习到如何利用日志系统进行故障排查,以及如何通过命令行接口...

    JXTA Platform JAVA参考实现源代码分析

    这一过程由多个初始化和启动方法组成,如`init()`和`startApp()`,并在序列图中清晰展示。 4.1 对等平台的构建细节 构建过程包括: - 读取配置信息(Configurator) - 创建广告对象(PeerAdvertisement, ...

    jxta-myjxta-src-2.5.zip_2.5 myjxta_jxta 2.5_jxta-myjxta-2.5.zip_

    在myjxta2.5中,我们可以看到如何初始化P2P网络,创建并管理对等节点,以及节点间的发现、连接和通信过程。 2. **XML消息交换**:JXTA的核心之一是XML消息,用于在对等节点间交换信息。myjxta的源码展示了如何构建...

    JXTA下的媒体数据传输

    JXTA的设计理念是通过一系列标准化的接口和服务来简化P2P应用的开发过程,使开发者能够更容易地创建去中心化的网络应用。本文将详细介绍如何在JXTA框架下实现媒体数据传输。 #### JXTA的特点与优势 1. **平台无关...

    JXTA-TCP-Listening.doc

    1. **初始化JXTA环境**:首先,需要设置JXTA配置文件,定义网络参数如网络ID、成员身份等,并启动JXTA运行时环境。 2. **创建Rendezvous服务**:Rendezvous服务是JXTA网络的关键组件,它负责维持网络的连通性和路由...

    一种基于Android和JXTA协议模型的无线D2D通信技术

    系统启动时,首先进行初始化,包括检查设备的WiFi连接状态、初始化缓存、建立JXTA网络连接,并搜索集合点获取节点列表。一旦初始化完成,节点就可以通过JXTA的管道服务与其他节点进行通信,请求和发送资源文件。 ...

    PracticalJXTA2.6_Examples

    初始化包括配置JXTA环境,创建并启动网络接口。发布服务意味着将节点的能力或资源广播到网络中,而发现服务则让节点能够找到网络中的其他节点和服务。 **节点连接** 是节点间通信的关键。JXTA提供了多种连接方式,...

    \p2p\Java技术在P2P环境下的应用

    - **组初始化与显示**:选中特定组时,自动初始化并展示其子通告,遵循统一的显示规则,提高用户体验。 ##### 3. 实现细节 实现过程中,设计了三个关键类:AdvertisemenTreeCellRenderer类负责根据节点存储数据的...

    jxse初学者代码

    初学者通过这些代码,能够了解JXTA的基本概念和用法,如节点的初始化、对等组的加入、消息的发送与接收等。 在JXTA中,每个运行JXTA的设备被称为“对等方”或“节点”,它们通过网络相互连接,形成一个对等网络。在...

    基于JXTA的P2P实例的研究与实现

    整个拍卖系统的流程图详细描绘了食客和餐厅之间通过JXTA平台进行通信的步骤,从初始化、发现和加入对等组,到通过管道发送和接收消息,最终实现竞标过程。该流程展示了JXTA平台在P2P网络中的应用,凸显了其对于...

    利用P2P实现服务

    1. **初始化网络**:使用JXTA提供的对等体创建和连接功能,初始化网络中的各个节点。 2. **发布拍卖信息**:餐馆作为信息发布者,通过JXTA的服务层发布拍卖信息,这些信息可以通过对等体检索协议被其他节点检索到。 ...

    Android-一个用于Android的P2P库

    解压后,开发者可以查看源代码,了解其内部工作原理,包括如何初始化P2P网络,如何处理节点发现,以及如何建立和维护TCP连接等。 在实际应用中,使用P2P库的Android应用可能涉及以下关键知识点: 1. **多线程和异步...

    基于Android的P2P手机高清视频在线点播系统

    - 初始化P2P网络并自动搜索P2P集合点。 - 读取集合点节点列表。 - 读取播放列表。 - 通过播放列表种子服务器搜索片源种子。 - 在集合点中搜索片源种子。 - 连接片源种子节点,请求传输。 - 数据缓冲完成后...

    分布式实验报告CORBA.docx

    9. **实验总结**:实验帮助理解了CORBA的基本概念,包括ORB的初始化、对象的注册与查找,以及客户端与服务器之间的通信流程。同时,也实践了基于Java IDL的CORBA编程,增强了对分布式系统开发的理解。 通过这个实验...

    局域网P2P资源共享软件的设计与实现

    - **系统启动模块**:负责初始化系统,包括加载配置文件、建立网络连接等。 - **资源共享模块**:实现文件上传和下载的功能,支持用户之间的资源共享。 - **资源搜索模块**:允许用户搜索网络上的共享资源。 - *...

    消息事件说明文档

    // 初始化连接工厂 ConnectionFactory connectionFactory = new ActiveMQConnectionFactory( ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, "failover:(tcp://10.42.220.72:61617,tcp:...

    Java P2P技术内幕

    例如,BitTorrent使用Tracker服务器进行初始化,然后节点之间通过Tracker获取其他对等节点的信息,进行文件的分块下载和上传。 4. **散列表和分布式哈希表(DHT)**:在P2P网络中,节点之间的联系依赖于有效的寻址...

Global site tag (gtag.js) - Google Analytics