我这里写的插件是基于openfire源码工程做的开发,不是专门开发of插件的工程。
1、到OpenFire工程下,找到src/plugins目录,新建myplugin文件夹(即插件的最外层目录,插件的名称也是根据这个文件夹名称来确定的),然后在这个目录下需要建 lib、src目录和plugin.xml文件;src下再java 、web目录(web这个以后可能要用),如图:
2、在java目录中添加java文件继承Plugin接口,作为插件启动的入口
package com.maojd.test;
import java.io.File;
import org.jivesoftware.openfire.XMPPServer;
import org.jivesoftware.openfire.container.Plugin;
import org.jivesoftware.openfire.container.PluginManager;
public class MyPlugin implements Plugin{
private XMPPServer server;
//插件在启动的时候会调用initializePlugin这个方法
@Override
public void initializePlugin(PluginManager manager, File pluginDirectory) {
// TODO Auto-generated method stub
server = XMPPServer.getInstance();
System.out.println("初始化安装插件....init myplugin mao");
System.out.println(server.getServerInfo());
}
@Override
public void destroyPlugin() {
// TODO Auto-generated method stub
System.out.println("服务器停止,销毁! end myplugin mao");
}
}
3、将java目录引入classpath路径,如图
4、编写plugin.xml配置文件
<?xml version="1.0" encoding="utf-8"?> <plugin> <!-- Main plugin class 这里是最重要滴,就是你的插件的全路径 --> <class>com.maojd.test.MaojdPlugin</class> <!-- Plugin meta-data --> <name>myplugin222</name> <description>This is the my sample plugin.description</description> <author>author maojd</author> <version>2.88888</version> <date>22/11/2013</date> <url>http://localhost:9090/openfire/plugins.jsp</url> <minServerVersion>3.4.1</minServerVersion> <licenseType>gpl</licenseType> <adminconsole></adminconsole> </plugin>
a) 关于class标签是“包.类”全路径,插件在启动的时候会去找这个类,这个类一定是继承了Plugin接口,会去调用这个类的initializePlugin()方法。
b)adminconsole标签是配置插件的jsp页面在of web工程中展现位置的说明。
5、使用ant编译插件,即双击build.xml文件中的 plugins这个子工程,编译完毕之后去target/openfire/plugins目录下面去查找,看有没有myplugin.jar这个文件,这个文件名就是第一步创建的文件夹,如图:
如果存在则说明插件开发成功,如果没有说明失败了,考虑哪里出错了。
6、启动OpenFir项目。打开http://localhost:9090/plugin-admin.jsp,查看,刚才的插件已经现实出来,并且启动过程,控制台打开了刚才的 语句
图片显示的的信息就是在plugin.xml文件中说明的属性,它前面展示的图标实际上是在myplugin目录中需要添加logo_large.gif 和 logo_small.gif图片作为展示。