Openfire是个实时协作服务器,它使用XMPP协议,易于管理和维护,安全稳定性好,而且可以添加插件拓展功能。
Openfire插件开发指导,这是官网文件,内容较少,看之前最好先看一看源码构建指导,里面涉及一些构建插件构建方法,就是用apache的ant。
下载的Openfire源码中含有ant构建需要的文件(build.xml),按照源码构建指导安装好jdk和ant。
插件的目录结构是很重要的,开发指导中有详细的讲解。注意其中的目录结构提到了两种,一个是plugin源码的的目录结构,一个是构建之后的目录结构。如下所示(未列出所有,测试程序用这些足够):
Plugin生成Jar包的目录结构
myplugin/ |- plugin.xml <- Plugin definition file |- lib/ <- Libraries (JAR files) your plugin needs |- web <- Resources for Admin Console integration, if any |- WEB-INF/
myplugin/ |- plugin.xml <- Plugin definition file |- lib/ <- Libraries your plugin needs |- src/ |- java <- Java source code for your plugin | |- com | |- mycompany | |- *.java |- web |- *.jsp <- JSPs your plugin uses for the admin console |- WEB-INF
以下是一个简单的插件示例,只在Openfire控制台显示一行字符。
plugin.xml
<?xml version="1.0" encoding="UTF-8"?> <plugin> <!-- Main plugin class --> <class>com.mycompany.TestPrint</class> <!-- Plugin meta-data --> <name>TestPrint</name> <description>First plugin, test print line.</description> <author>Bing</author> <version>1.0</version> <date>11/08/2011</date> <url>http://localhost:9090/openfire/plugins.jsp</url> <minServerVersion>3.4.1</minServerVersion> <licenseType>gpl</licenseType> <!-- Admin console entries --> <adminconsole> <!-- More on this below --> </adminconsole> </plugin>TestPrint.java
package com.mycompany; import org.jivesoftware.openfire.container.Plugin; import org.jivesoftware.openfire.container.PluginManager; import java.io.File; /** * Test Print */ public class TestPrint implements Plugin { /** * Constructs a new client control plugin. */ public TestPrint() { } // Plugin Interface public void initializePlugin(PluginManager manager, File pluginDirectory) { System.out.println("Test Print, My First Openfire Plugin"); } public void destroyPlugin() { } }构建方法:
将以上两个文件存到Openfire源码src/plugins目录下,目录结构如下:
plugins
└─testPrintTestPrint.java
控制台或shell操作,cd到Openfire源码build目录下,运行命令:ant plugins
构建完成后,源码文件夹中生成了一个目录/target/openfire/plugins,其中有testPrint.jar文件,拷到可运行的Openfire的plugin目录中,重启Openfire,这时Openfire控制台显示程序中的字符,效果如图: