XMPP学习笔记-LESSON-003:XMPPServer.java之initialize​

原创
2014/01/26 12:02
阅读数 845

上文讲到,ServerStarter通过java反射机制,实例化org.jivesoftware.openfire.XMPPServer,在xmppserver构造函数中,调用start方法,,开始了服务之旅.

首先,我们来看看start方法中,XMPPServer,它都干了什么.

由于篇幅有限,先从initialize部分开始。

1,locateOpenfire,

这个不稀奇,初始化一些数据和环境变量.首先locateOpenfire,顾名思义,找到openfire,这里是指openfire的主目录。怎么找呢?读取配置文件conf/openfire.xml,这里找openfireHome变量。如果没有咋办,这里有一个很有意思的方法:verifyHome,啥意思呢?就是验证openfire主目录在哪?如果之前openfireHome没设置,那么就检查当前上一级目录(..),如果还没找到,就找web/WEB-INF/openfire_init.xml配置,还没找到,就抛异常了,.....,也别干了,收工吧。当然如果找到了,就保存到配置JiveGlobals中,这个JiveGlobals非常重要,以后说?感觉是不是很纠结啊,这主要考虑到一些安装配置的一些情况,从而也可以看出设置的优先级,简单来说,如果我们在环境变量中直接设置openfireHome,就哦了,清楚告诉它,也就不纠结了。

2,读取xmpp.domain,默认是127.0.0.1,相当于localhost,这里xmpp.domain是域名的,了解一点xmpp的都知道,jid是有node@domain/resource组成,这里xmpp.domain就是jid中的domain了,这个也可以配置,在数据库表中ofproperty中配置,先了解,具体以后再说。提醒一下,这个读取是从JiveGlobals对象中读取,这是第二次说道JiveGlobals。

3,解析host,主机名

4,获取版本Version信息

5,判断是否setupMode,即安装模式,如果是安装模式,在打开管理平台界面的时候,会进入安装配置界面。

openfire提供了非常友好而强大的web管理平台,结合web平台学习openfire,事半功倍。

6,创建loader对象,此loader在ServerStarter中保存的对象

7,缓存初始化,CacheFactory,默认org.jivesoftware.util.cache.DefaultLocalCacheStrategy,有兴趣的可以研究一下

8,最后initialized = true;,标识初始化完成。


这里有一个isStandAlone判断,根据代码分析,我理解是是否从org.jivesoftware.openfire.starter.ServerStarter这个启动器启动,如果是,则true,那么这里的意思,可能在于对其它方式的启动的区别。比如,你可以自定义一个对象,或者从web启动这个XMPPServer,那就不是standalone了。这是我个人的理解,希望各位大神拍砖。


至此,XmppServer的initialize代码阅读完成。

未完待续...




展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
4 收藏
0
分享
返回顶部
顶部