openfire 插件开发学习笔记

为了帮单位开发基于XMPP协议的的消息推送系统,近期研究了openfire的源代码,在此基础上做插件开发。以前没有做过JAVA程序,所以研究起来有点吃力。学习了几天后,参考了几篇别人的文章,终于把最基础的插件开发部分完成了,为了留作备忘,记录如下。

openfire的版本 3.8.2

在eclipse上开发。

开发插件最重要的部分是插件的目录结构和名称。包括plugin.xml文件和build.xml文件

学习的文章都是单独建立插件项目,编译完成后再拷贝到openfire源码相应目录,我这里不想这么做,因为觉得调试会比较麻烦,不知道怎么远程调试什么的,就直接在openfire的源码项目上开发插件。

研究了openfire原有的插件的目录,插件都在src/plugins/目录下。插件的源文件都在src/plugins/myplugin/src/java文件夹下

所以在项目上右键-》new>Source Folder,输入路径src/plugins/myplugin/src/java,其中myplugin是我要建的插件。

然后在生成的source folder 上右键-》new>package,输入要建立的包的名称,比如com.hnds.openfire.plugin

eclipse会自动生成相应的文件夹。

然后在建成的package上右键-》new >class,输入类名testplugin

然后在新建的testplugin.java文件中输入

[java]  view plain copy
  1. package com.hnds.openfire.plugin;  
  2.   
  3. import java.io.File;  
  4.   
  5. import org.jivesoftware.openfire.XMPPServer;  
  6. import org.jivesoftware.openfire.container.Plugin;  
  7. import org.jivesoftware.openfire.container.PluginManager;  
  8.   
  9. public class testplugin implements Plugin{  
  10.     private XMPPServer server;  
  11.  @Override  
  12.  public void initializePlugin(PluginManager manager, File pluginDirectory) {  
  13.   // TODO Auto-generated method stub  
  14.   server=XMPPServer.getInstance();  
  15.   System.out.println("开始启动test plugin");  
  16.   System.out.println(server.getServerInfo());  
  17.  }  
  18.   
  19.  @Override  
  20.  public void destroyPlugin() {  
  21.   // TODO Auto-generated method stub  
  22.   System.out.println("停止 test plugin");  
  23.  }  
  24.   
  25. }  


 

这个部分和其他的人写的没什么区别

然后在eclipse的package explorer中找到项目的src文件夹,找到对应的src/plugins/myplugin文件夹,在myplugin 文件夹下建立plugin.xml文件,不是在myplugin/src文件夹下建立哦。

[html]  view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <plugin>  
  3.     <!-- Main plugin class  这里是最重要滴,就是你的插件的全路径-->  
  4.     <class>com.hnds.openfire.plugin.testplugin</class>   
  5.     <!-- Plugin meta-data -->  
  6.     <name>myplugin</name>  
  7.     <description>This is the my test plugin.</description>  
  8.     <author>hnds</author>  
  9.     <version>1.0</version>  
  10.     <date>12/02/2014</date>  
  11.     <url>http://localhost:9090/openfire/plugins.jsp</url>  
  12.     <minServerVersion>3.4.1</minServerVersion>  
  13.     <licenseType>gpl</licenseType>   
  14.     <adminconsole>          
  15.         </adminconsole>  
  16.           
  17. </plugin>  


其中class里面就是包的路径com.hnds.openfire.plugin加上类名testplugin,

然后是修改build.xml

openfire的3.8.2的源代码的build.xml文件都已经写好了编译插件的ant代码,需要增加的部分就是增加一个要编译的插件的名称

[html]  view plain copy
  1. <property name="plugin" value="myplugin"/>  
  2.     <property name="plugin.src.dir" value="${src.dir}/plugins"/>  
  3.     <property name="plugin.dev.dir" value=""/>  

找到下面两行的property的位置,在上面加上最上面那一句,位置应该不是很重要,写在一起好看点。plugin的值就是插件名称myplugin

[html]  view plain copy
  1. <target name="plugin" description="build one plugin">  
  2.        <mkdir dir="${plugin.dest.dir}"/>  
  3.   
  4. //将上面三个pro标签添加到下面

  5.        <delete dir="${plugin.dev.dest.dir}/${plugin}"/>  
  6.        <delete file="${plugin.dev.dest.dir}/${plugin}.jar"/>  
  7.        <delete file="${plugin.dest.dir}/${plugin}.jar"/>  
  8.        <buildplugin plugin="${plugin}" pluginsrc="${plugin.src.dir}"/>  
  9.   
  10.        <!-- Update/create target/openfire directory -->  
  11.        <antcall target="openfireHome"/>  
  12.    </target>  


这是因为build.xml文件中有这么一段,用来单独编译一个插件的target

然后我们在build.xml文件上点击右键-》run as>ant build

然后在targets中选择plugin,描述是build one plugin,打上勾,然后run.插件编译完

然后选择项目,运行,在console中可以看见如下

[html]  view plain copy
  1. Openfire 3.8.2 [2014-2-13 17:24:39]  
  2. 管理平台开始监听:  
  3.   http://bh-20121122vapx:9090  
  4.   https://bh-20121122vapx:9091  
  5. 开始启动test plugin  
  6. org.jivesoftware.openfire.spi.XMPPServerInfoImpl@12b1e53  


这就说明编译成功了。

通过127.0.0.1:9090访问openfire后台,可以在插件分页中看到我们新建的插件已经在插件列表中运行了。

 

因为本人对java不是很熟,所以是简单的记录我的操作全过程,相比网上其他的文章我的主要是演示了

怎样直接在openfire源码项目中建立并编译插件,之后我还要继续在这个插件的基础上编写

openfire中记录聊天记录的插件,将会继续把心得记录下来。

你可能感兴趣的:(java,Web,openfire,插件)