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代碼閱讀完成。

未完待續...

相關文章
相關標籤/搜索