`

MyJxta2.5研究心得 (2009-07-24)

    博客分类:
  • JAVA
阅读更多
MyJxta2.5研究心得 (2009-07-24)
MyJXTA 的核心对象解析(数据结构)。
JxtaNode 为应用程序显示基本节点。GropuNode为封装了Group的JxtaNode子节点。Group封装了Jxta组PeerGroup。PeerNode为封装了Peer的JxtaNode子节点。Peer封装了Jxta对等点广告。
一、程序的变量初始化
1、主程序Main调用MyJXTA的静态方法 startMyJxta(),程序进入MyJXTA类。    2、MyJXTA类的静态变量Name调用Constants类的单例方法。程序进入Constants 类
3、Constants类中,静态块代码调用Env类的initialize()进行系统变量的初始化。
initialize()方法先调用initHome()初始化系统配置文件目录,然后调用initMyJxtaConfig(home)。 该方法初始化MyJXTA默认配置文件。默认配置文件包括 jxta的默认配置文件profile.xml,MyJxta的默认配置文件myjxta.xml,该文件中设置了MyJXTA组的相关全局信息。同时在Env中完成Constants的唯一实例的初始化。同时将各常量信息初始化。常量信息主要包括系统基本配置信息,MyJXTA全局名等信息,然后调用了initPreferences(String home)。initPreferences(String home)方法初始化MyJxta程序的外观设置。
二、程序运行目录的唯一检查
检查程序在某一目录文件里是否为唯一实例。通过建立的查询协议生成目录及端口使用文件,然后通过使用SeverSocket建立监听端口,程序运行时检查该调用本机Socket,检查端口是否占用。

三、MBeanServer与MBean的注册

四、PluginContainer 插件容器的初始化
PluginFetcher类中内部类PluginJar,得到所有的内部插件和外部插件列表,并利用PluginClassLoader实例化各插件类
五、初始化显示层
1、利用ViewFactory工厂方法实例化SwingViewer,SwingViewer将变量customSwingViewClass配置为MyJXTAView
2、实例化MyJXTAView 完成界面的初始化
六、插件的初始化
    在插件容器中调用所有注册了并实现了Plugin接口的各子类的init() 方法,init()方法将在接口子类中初始化插件,注册相关对话。
七、在NetworkManagerConfigurator中初始化JXTA网络配置(如果想要更改登录方式,在此处更改。同时注意MyJXTAView 的configure()方法。另外JXTA平台的属性也在此处配置,为何无本地化?如何实现本地化,需自己重写一个?)
初始化NetworkManagerConfigurator后调用configurePlatform()类进行JXTA的相关配置。主要配置用户的登录属性,并存储配置。
八、MyJXTA网络的初始化
1、是否需要配置网关.需要则配置网关。
2、初始化 NetPeerGroup.将其封装为Group,并调用joinGroup(final Group group, boolean useAutoRdvMode, boolean discover)方法加入该组。
3、joinGroup(final Group group, boolean useAutoRdvMode, boolean discover)方法首先提取封装在Group中的PeerGroup,通过DialogNamer得到OneToOneCommandDialog会话的本地用户名称。
4、通过PipeUtil类的静态方法 getAdv(peerGroup, dialogName, PipeService.UnicastType, null)得到该NetPeerGroup的公告。该方法先使用DiscoveryService.getLocalAdvertisements(DiscoveryService.ADV, PipeAdvertisement.NameTag, name)方法检查本地是否已存储该组相关名称的广告。若本地没有该群组相关信息的广告,则调用createAdv(pg, name, type, pipeId);方法生成新广告,同时publish(pg, pa);该方法使用DiscoveryService类的publish(pa)方法。
5、将NetPeerGroup做为MyJXTA的父组,将其可见性设为隐藏。
6、将封装了NetPeerGroup的Group再次封装到GroupNode中作为结点显示。并将该GroupNode父结点设为全局父结点。使用addJxtaNode()方法将该组结点信息添加到显示窗口同时并在MyJxtaObjectRepository.getObjectRepository().add(node, parent)注册该加入群组结点。addJxtaNode()方法先将使用MyJxtaView类实例的addJxtaNode()方法该结点添加到视图中。
7、MyJxtaView类实例的addJxtaNode()方法判断是否为PeerNode,若是,刚将其父结点展开,返加。
其余将群组集视图展开
8、MyJxta类实例的addJxtaNode()方法在会判决该结点类型,若为PeerNode,则将其封装为PeerEntry,并注册到PresenceController类的中的实体状态控制集合。状态控制类PresenceController为控制某一群组内各子成员节点状态信息的控制器。
9、调用restore(group)方法修复NetPeerGroup群组内所有相关信息。
即检查本地存储的群组的公告信息,将其加入的所有子群组恢复,将其加入的Peer信息恢复。通过查询PipeAdvertisement修复所加入该群组的Peer信息。
   10、不需要discover NetPeerGroup所以未调用discover()方法。若discover为true
刚discover()方法将调用。该方法将使用
   11、将NetPeerGroup加入到已加入组中
   12、验证加入组的授权信息(AuthenticationUtil授权辅助类)
尝试取得该节点加入组的授权信息,若无授权信息则验证授权。授权验证流程:A:得到组的MembershipService  ms,新建群组的AuthenticationCredential  ac,
   
2、主程序Main调用MyJXTA的静态方法 startMyJxta()。该方法是一个MyJXTX类的单例模式,生成或者返回MyJXTA全局唯一实例。
分享到:
评论
1 楼 abhore 2011-04-24  
谢谢啦,对我帮助很大!

相关推荐

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

    《JXTA技术详解——基于myjxta2.5源码分析》 JXTA(Java XML-based Peer-to-Peer Technology)是Sun Microsystems推出的一种开放的、基于XML的P2P...无论是学术研究还是商业应用,myjxta2.5都是一份宝贵的参考资料。

    jxta-myjxta-minimal-2.5.zip

    4. **丰富的示例**:"jxta-myjxta-minimal-2.5.zip"包含了多个示例项目,这些示例展示了如何使用MyJXTA进行P2P应用的开发,包括网络发现、消息传递、资源共享等功能。 5. **源码可用**:这个压缩包还包含了源代码,...

    jxta-myjxta-2.5.zip_file sharing in chat_jxta 2.5 例子_jxta2.5.jar

    《JXTA技术详解:基于myJXTA-2.5的P2P文件共享与聊天实例》 JXTA(Java eXtensible Networking Architecture)是Sun Microsystems开发的一种开放的P2P(peer-to-peer)平台框架,它提供了一组协议和服务,使得设备...

    jxta-myjxta-src-.zip

    通过深入研究这个"myjxta-"源码库,开发者不仅可以掌握JXTA的基本原理,还能学习到如何在实际项目中应用这些技术,从而提升P2P应用的开发能力。对于希望在分布式计算、物联网或者边缘计算等领域有所建树的开发者而言...

    jxta-src-2.4.1.zip_JXTA2.4.1_MyJXTA2.4_jxta_jxta-lib-2.4.1.zip_j

    "myjxta2.4"可能是指MyJXTA,这是一个基于JXTA的开发工具集,简化了JXTA应用的开发流程,提供了友好的API接口和示例代码。 "jxta-jxta-lib-2.4.1.zip"标签暗示了JXTA的库文件,这是运行和开发JXTA应用的基础。JXTA...

    jxta-myjxta-docs-2.4.1_helloworld_

    “jxta-myjxta-docs-2.4.1_helloworld_”这个标题暗示了我们正在讨论的是关于JXTA和MyJXTA的一个文档集合,特别关注2.4.1版本的“HelloWorld”示例。这通常是最基础的教程,用于帮助开发者快速理解如何使用JXTA和...

    JXTA开发包3

    1. **jxse-tutorials-src-2.5.tar.gz** 和 **jxse-tutorials-src-2.5.zip**:这两个文件很可能是JXTA的源码教程,可能包含了示例代码和文档,供开发者学习和参考。源码可以深入了解JXTA的工作原理,而教程则可以帮助...

    jxta2.2 开发文档

    8. **工具与Shell**:“jxtashell_doc.zip”和“myjxta-2.2a-doc.zip”可能包含JXTA Shell和MyJXTA的文档,这两个工具可以帮助开发者更方便地管理JXTA网络,执行命令行操作,调试和测试应用程序。 9. **即时P2P**:...

    zuixin.txt

    解压后将`jxta-2.2-bin.zip`文件中的`myjxta-2.2a.zip`解压到`D:\Java\JXTA`目录下。 ##### 3.3 环境变量设置 为了使JXTA能够被系统识别,需要在环境变量中设置以下路径: - `JAVA_HOME`: 设置为`D:\Java\j2sdk...

Global site tag (gtag.js) - Google Analytics