1. 程式人生 > >openfire外掛開發除錯詳解[圖文]

openfire外掛開發除錯詳解[圖文]

        最近接觸xmpp協議和openfire伺服器,文件貌似不怎麼豐富,中文資料就更加屈指可數了。這麼多中文部落格,我可沒看到一篇像樣的。我們在一個軟體上做二次開發,最關心的肯定是如何方便地進行除錯,特別是像openfire這種,如果不知道如何除錯的話,絕對不是一般人能忍受開發過程當中的憤怒的。

        好了,該進入正題了,本文就整合官網給出的兩個帖子以及個人的研究探索,給出完整的開發和除錯方法,供初學者參考。http://community.igniterealtime.org/docs/DOC-1020,此文介紹如何在eclipse中匯入openfire並除錯,除了匯入程式碼方式以外,基本上適用,我用的是eclipse3.6,不適用文章中的“Create project from existing source

”,點選File->New->Java project,去掉use default location勾選,browse到你下載的openfire原始碼根目錄,確定即可匯入。

eclipse

        專案匯入之後就要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

}/target/openfire",黃底的是你剛才匯入的project名;轉到Classpath標籤,在User Entries新增幾個目錄,分別是openfire/src/i18n,openfire/src/resources/jar,openfire/src/test/resources(這個資料夾官網沒提到,但是還是需要的):

advance

轉到common標籤,勾選debug和run,其實不勾也行,看你自己喜歡咯,然後apply,debug就可以跑起來了。

        當你的openfire跑起來了,其實就已經搭建好除錯環境了,ServerStarter加個斷點試試!同時,這說明你已經具備除錯外掛的環境了,接下來就說下外掛如何除錯,以及如何不使用openfire的預設目錄結構,使用自定義專案和openfire整合除錯。

        在openfire專案中,我們可以看到已經有很多現成的外掛,目錄結構很明顯src/plugins/${plugin}。一個外掛的目錄結構也很簡單:

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目錄:

javac

加入我們的非java的resources:

resources

        第四,用剛才介紹的build plugin方法build你自己的plugin。就是這麼簡單幾步,就可以實現你的專案和openfire整合除錯了。

好了,寫了快一小時了,比較累,暫且介紹到這裡吧,更多的技巧就需要大家多多發掘,多多分享了!遇到問題歡迎提問~

====================================================================================================

本文允許轉載,但務必註明出處。謝謝!

本文地址:http://www.shaojiahao.org/openfire/openfire-plugin-develop-debug