天天看點

Openfire 開發插件web UI

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, 如圖:

Openfire 開發插件web UI

點進去之後就可以看到一個輸入框和一個按鈕

Openfire 開發插件web UI

使用web UI的優點:

與openfire風格統一, 不需要釋出額外的配置程式。

缺點:

UI不易調整, 修改UI需要ant plugins 并重新開機openfire才能生效, 不易調試(内嵌的jetty特性決定)。

不易實作複雜的UI, 需要維護web檔案夾下的jsp(需要熟悉jsp 頁面開發)。

使用第3方配置程式的優點:

容易調試,界面容易調整, 容易調試。 出錯不影響openfire。

缺點:

需要實作xmpp協定與openfire連接配接(可使用smark)。

需要維護第3方應用程式(可考慮使用java swing)。

繼續閱讀