天天看点

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)。

继续阅读