網上關於openfire開發的文字很是多,在這裏推薦一篇文章:html
http://redhacker.iteye.com/blog/1919329
android
這是單獨開發openfire插件的的一個實例。設計模式
不過我我的仍是建議在原有的openfire源碼上,保持源碼結構的形式來開發openfire插件。這樣在編譯或者修改插件的時候,能夠直接用openfire的編譯命令來編譯,更有利於源碼庫的管理。固然這是我的之見。ide
下面仍是講講如何從代碼層面開發of插件吧。編碼
前一章,咱們講過插件管理器,初步瞭解了插件管理器的做用和生命週期,如今咱們來看一下插件究竟是什麼?spa
插件就是Plugin(廢話),plugin是插件的接口,這個接口定義了2個方法,初始化和註銷。這在上一節插件管理器啓動的時候有所說起,這也是插件的生命週期。簡單來講,實現了這兩個接口的對象就是一個of插件組件了。具體如何管理和運行,這就不用插件開發人員管了?想一想,這裏存在什麼設計模式呢?模板?開發android的都知道,相似activity,activity能夠說是集設計模式之大成者,改天會具體聊聊。插件
言歸正傳!設計
查看pluginmanager,loadPlugin:xml
首先載入plugin.xml , 這是插件的入口,來看看plugin.xml的配置,這也是很關鍵的地點:
以fastpath爲例:
<!--編碼設置,指定utf-8,pluginmanager中指定過 setEncoding("UTF-8") -->
<?xml version="1.0" encoding="UTF-8"?>
<plugin>htm
<!--指定插件類名,
demo: String className = pluginXML.selectSingleNode("/plugin/class").getText().trim();
-->
<class>org.jivesoftware.openfire.fastpath.FastpathPlugin</class>
<name>Fastpath Service</name> <!--插件名稱-->
<description>Support for managed queued chat requests, such as a support team might use.</description>
<author>Jive Software</author><!--插件開發者-->
<version>4.2.0</version>
<date>12/2/2009</date>
<minServerVersion>3.7.0</minServerVersion>
<databaseKey>fastpath</databaseKey> <!-- 參看getDatabaseKey方法-->
<databaseVersion>0</databaseVersion>
<adminconsole>
....<!--略 配置插件關聯的頁面-->
</adminconsole>
</plugin>
能夠參考如下資料,寫的很是好,我這裏講講如何在代碼寫:
1,主要理由XMPPServer這個單例的實例來獲取相關manager對象,而後進行操做,好比connectionmanager等,而後經過這些接口來進行保存和設置數據。其中涉及openfire的核心代碼,好比provider等,這些之後繼續研究。
今天有些急躁,簡單寫了寫。
可猛戳!
參考:
1,跟我一步一步開發本身的Openfire插件http://www.cnblogs.com/hoojo/archive/2013/03/07/2947502.html2,Openfire插件開發人員指南http://www.360doc.com/content/10/0707/15/1332348_37445649.shtml