Openfire的所有插件都存放在openfire根下的plugins目录下。当一个插件被以JAR或WAR文件发布时,他自动扩展为一个文件夹。插件目录结构如下所示:
Plugin Structure
myplugin/
|- plugin.xml <- 插件定义文件
|-readme.html <- 可选的插件自己述文件,它将被显示给最终用户。
|-changelog.html <-可选的插件版本日志文件,它将被展现给最终用户。
|-logo_small.gif <- 可选的与插件关联的小图标(16x16)文件(也能为png文件)
|-logo_large.gif <-可选的与插件关联的大图标(32x32)文件(也能为png文件)
|- classes/ <- 你的插件需要的资源文件(如properties文件)
|- database/ <- 可选的你的插件需要的数据库schema文件
|- i18n/ <- 可选的i18n文件,它们为插件提供国际化支持
|- lib/ <- 你的插件需要的库(JAR文件)
|- web <- 需要集成到管理控制台中的各类资源(如果有的话)
|- WEB-INF/
|-web.xml <- 配置jsp调度的web.xml配置文件
|-web-custom.xml <- 可选的用户定义的web.xml文件,用于调度自定义servlets
|- images/
插件开发流程:
1.将Openfire的源码导入到Eclipse中,
在项目文件夹\openfire\src\plugins下手动新建一个插件文件夹,定义名为org(随便取),进入文件夹根据需要新建以上文件夹或文件,其中web、i18n、icon、database都不是必须的。
建立plugin.xml :
<?xml version="1.0" encoding="UTF-8"?>
<plugin>
<!—插件主类 -->
<class>org.jivesoftware.openfire.plugin.OrgInfoPlugin</class>
<!—插件信息 -->
<name>Plugin</name>
<description>Test Plugin</description>
<author>Aaron</author>
<version>1.0.0</version>
<date>12/24/2007</date>
<minServerVersion>3.4.1</minServerVersion>
<licenseType>gpl</licenseType>
<!—Web界面需要配置,没有界面则保留<adminconsole>空标签即可 -->
<adminconsole>
</adminconsole>
</plugin>
保存退出。
退回到项目根目录 用记事本打开CLASSPATH文件 ,找到类似
|plugins/packetFilter/src/java/" kind="src" path="src"/>的地方复制|plugins/packetFilter/src/java/ 并更改其为|plugins/org/src/java/粘贴在|plugins/packetFilter/src/java/后面 。
复制一条<classpathentry kind="src" path="src/plugins/fastpath/src/java"/>将 path改为你插件的目录 也就是src/plugins/org/src/java ,保存退出。
打开Eclipse点击项目按F5刷新,看到新加入的插件:
打开OrgInfoPlugin,最基础的类结构如下:
package org.jivesoftware.openfire.plugin;
import java.io.File;
import org.jivesoftware.openfire.*;
import org.jivesoftware.openfire.container.*;
public class OrgInfoPlugin implements Plugin {
public OrgInfoPlugin() {
}
public void initializePlugin(PluginManager manager, File pluginDirectory) {
System.out.println("初始化插件");
}
public void destroyPlugin() {
System.out.println("停止插件");
}
}
插件主类必须实现org.jivesoftware.openfire.plugin. Plugin插件接口
并实现里面的两个方法:initializePlugin(PluginManager manager, File pluginDirectory)、destroyPlugin()。initializePlugin方法在插件加载时调用,destroyPlugin在插件卸载或者重启是调用,在initializePlugin书写你的功能代码或者调用其他方法执行。
3、 插件编译
编译插件需要ANT工具,Jbuilder、Eclipse都内置Ant工具,我们往环境变量里追加path变量 加入ant 的路径 Jubilder的路径就是:
Borland JBuilder\2005\thirdparty\ant\bin
加入变量后我们就可以在CMD里调用ANT命令了,运行 → CMD 打开命令提示行 ,进入到Openfire项目的根目录下的Build的文件夹 ,输入命令ant plugins
编译插件,待插件编译完成后生成的Jar在\openfire\target\openfire\plugins\下面。
4、 插件装载
找到你的插件复制出来,如果保留在该文件下则插件随Openfire一同启动。
插件可以直接copy到openfire运行环境的 目录下。
也可以在管理控制台 插件页面通过上传功能直接上传。
以下是我们项目管理界面的插件界面:
下一篇我们将聊聊openfire提供的插件及其作用,方便大家在开发时选用。