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

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

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

因为篇幅有限,先从initialize部分开始。
web

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。dom

3,解析host,主机名函数

4,获取版本Version信息学习

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

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

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代码阅读完成。

未完待续...

相关文章
相关标签/搜索