Openfire 可以為插件增加一個admin控制台配置和檢視的web UI界面。
openfire web 伺服器
Openfire采用内置的jetty作web伺服器,在啟動AdminConsolePlugin插件時調用startup()方法啟動jetty伺服器,9090為其明文端口,9091為其加密端口。
openfire 頁面處理
Openfire沒有采用現在很流行的技術架構(SSH),隻使用JSP+JavaBean,
現有的Openfire管理控制台可采用插件方式進行擴充,頁面采用Jsp方式實作,頁面直接調用業務處理邏輯類(通常命名為XXManager)的執行個體方法,通常通過request對象封裝的方式傳遞頁面展現判定變量,常出現本頁跳轉。每個插件可定義自己的Servlet類和web.xml及web-custom.xml配置檔案。
采用裝飾架構方式展現頁面,decorator頁面有兩個,即src/web/decorators目錄下的兩個頁面main.jsp和setup.jsp。采用自定義的admin标簽實作,标簽庫admin.tld放置在src/web/WEB-INF目錄下,标簽解析類放置在org.jivesoftware.admin包下,有SidebarTag、SubnavTag、SubSidebarTag、TabsTag四個解析類。在調用loadPlugin()方法進行插件加載時,解析插件的plugin.xml配置檔案,将擷取的相關資訊封裝在AdminConsole類的generatedModel對象中,後期通過插件解析類提取該對象中的資料并配合sitemesh裝飾器進行頁面展現。
Openfire 增加插件web UI過程如下:
1. 修改插件的配置檔案plugin.xml,增加URL選項。如下:
<!-- Admin console entries -->
這裡的标簽覺定了頁面位置 |
<adminconsole>
<tab id="tab-server">
<sidebar id="sidebar-server-settings">
<item id="TCLSmartHome" name="TCLSmartHome"
url="tclsmarthome.jsp"
description="TCLSmartHome communication" />
</sidebar>
</tab>
</adminconsole>
2. 在插件src目錄下面增加web檔案夾,以tclsmarthome插件為例, 插入的檔案夾路徑為openfire_src\src\plugins\tclsmarthome\src\web, 添加檔案tclsmarthome.jsp, 這個檔案需要自己編寫。 可以參考其他插件。
tclsmarthome.jsp 的内容:(僅包含一個輸入框和一個按鈕)
<html>
<head>
<title>TCLSmartHome</title>
<meta name="pageID" content="users-creation"/>
</head>
<body>
TCLSmartHome Timer Config
<input> </input>
<button>set</button>
</body>
</html>
3. 執行ant plugins 指令, 編譯釋出運作openfire。 使用admin登陸之後, 在server的設定頁面下可以找到TCLSmartHome, 如圖:

點進去之後就可以看到一個輸入框和一個按鈕
使用web UI的優點:
與openfire風格統一, 不需要釋出額外的配置程式。
缺點:
UI不易調整, 修改UI需要ant plugins 并重新開機openfire才能生效, 不易調試(内嵌的jetty特性決定)。
不易實作複雜的UI, 需要維護web檔案夾下的jsp(需要熟悉jsp 頁面開發)。
使用第3方配置程式的優點:
容易調試,界面容易調整, 容易調試。 出錯不影響openfire。
缺點:
需要實作xmpp協定與openfire連接配接(可使用smark)。
需要維護第3方應用程式(可考慮使用java swing)。