openfire外掛開發除錯詳解[圖文]
最近接觸xmpp協議和openfire伺服器,文件貌似不怎麼豐富,中文資料就更加屈指可數了。這麼多中文部落格,我可沒看到一篇像樣的。我們在一個軟體上做二次開發,最關心的肯定是如何方便地進行除錯,特別是像openfire這種,如果不知道如何除錯的話,絕對不是一般人能忍受開發過程當中的憤怒的。
好了,該進入正題了,本文就整合官網給出的兩個帖子以及個人的研究探索,給出完整的開發和除錯方法,供初學者參考。http://community.igniterealtime.org/docs/DOC-1020,此文介紹如何在eclipse中匯入openfire並除錯,除了匯入程式碼方式以外,基本上適用,我用的是eclipse3.6,不適用文章中的“Create project from existing source
專案匯入之後就要build openfire了,選單window->show view->ant,add build files, 新增build.xml,之後從檢視中選擇目標openfire[default],之後就會很順利地建立了target和work目錄了。接下來就是要將openfire跑起來,這個也相對步驟都一些,不過剛才給定的地址都已經有說明,這裡就簡單翻譯一下。點debug->Debug configurations->Java Application,new一個,名字任意,project選剛剛匯入的openfire,Main class 搜尋ServerStarter(org.jivesoftware.openfire.starter.ServerStarter);轉到Arguments標籤,VM arguments新增一句-DopenfireHome="${workspace_loc:openfire
轉到common標籤,勾選debug和run,其實不勾也行,看你自己喜歡咯,然後apply,debug就可以跑起來了。
當你的openfire跑起來了,其實就已經搭建好除錯環境了,ServerStarter加個斷點試試!同時,這說明你已經具備除錯外掛的環境了,接下來就說下外掛如何除錯,以及如何不使用openfire的預設目錄結構,使用自定義專案和openfire整合除錯。
在openfire專案中,我們可以看到已經有很多現成的外掛,目錄結構很明顯src/plugins/${plugin}。一個外掛的目錄結構也很簡單:
http://community.igniterealtime.org/docs/DOC-1200 這篇文章介紹如何build 外掛,字很少,估計也看得懂。這裡我也簡單翻譯一下吧。選Run->External tools->ant build,new一個,名字任意,buildfile選擇上面提到的build.xml,如果你要單獨build某個外掛的話,Arguments需要填寫一下,如-Dplugin=xmldebugger,這就告訴ant我只需要build xmldebugger這個外掛,轉到Targets標籤,選擇plugin目標,Apply,run就可以了,當你的外掛build好以後,在target目錄和work目錄都有體現了,已經可以除錯,並且我發現修改了java檔案不需要重啟openfire就可以除錯。如果你想build所有plugin的話,就不需要剛才提到的Arguments了,在Targets標籤選擇plugins,就可以一次性build所有plugin,不過本人不推薦這種做法,因為這樣log啊什麼的都多很多,而且使得除錯變得麻煩,建議大家只選擇自己需要的外掛來build。
下面就是本文的價值所在,如果我們不喜歡按照openfire的預設目錄結構來開發外掛,那該怎麼辦呢?特別像我這種習慣使用maven2多專案除錯的人,更受不了結合那麼緊密的目錄結構。我們要使用自定義專案作為openfire外掛來除錯,有幾個主要步驟:
第一就是要建立我們自己的專案,當然最後打包的結果要跟openfire要求的結構一致才能除錯,建立專案的過程這裡就不說了,如果你使用的是maven2,可以參考一下此外掛,能協助你更容易地build openfire外掛哦!
1 |
< plugin >
|
2 |
< groupId >com.reucon.maven.plugins</ groupId >
|
3 |
< artifactId >maven-openfire-plugin</ artifactId >
|
4 |
< version >1.0.2</ version >
|
5 |
< extensions >true</ extensions >
|
6 |
< configuration >
|
7 |
</ configuration >
|
8 |
</ plugin > |
第二就是要在openfire專案中建立我們的plugin目錄,需要的檔案在上面的圖也就說明了。如果你有自己的servlet的話,就要在web-custom.xml中宣告一下哦,所有外掛的servlet最後都由org.jivesoftware.openfire.container.PluginServlet來管理,呵呵,當你除錯你的servlet的時候就別忘了看看這個類了,不然你會抓狂的。我們的plugin目錄,建議建立一個lib目錄,將我們的maven工程依賴的包都加進去,那就不用研究ant和maven2的互動,畢竟我們還是比較推崇敏捷,花太多時間在這些細節方面就不太好了。
第三,也是最重要的一點,我們需要修改一下build.xml檔案,來支援我們的自定義工程,我們修改的東西不多,主要就是讓ant把我們外部工程的原始檔編譯好,還有我們依賴的非java檔案,如spring配置檔案等,需要copy到目標目錄中的。修改的目標就是plugin,在javac處加入我們的java目錄:
加入我們的非java的resources:
第四,用剛才介紹的build plugin方法build你自己的plugin。就是這麼簡單幾步,就可以實現你的專案和openfire整合除錯了。
好了,寫了快一小時了,比較累,暫且介紹到這裡吧,更多的技巧就需要大家多多發掘,多多分享了!遇到問題歡迎提問~
====================================================================================================
本文允許轉載,但務必註明出處。謝謝!
本文地址:http://www.shaojiahao.org/openfire/openfire-plugin-develop-debug