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;  

你可能感兴趣的:(.net,工作,cache)