您的位置:首页 > 运维架构

openfire插件二次开发配置

2014-11-04 21:59 477 查看
openfire插件二次开发配置

openfire是一款基于XMPP协议开发的开源IM服务器框架,利用该框架可以快速开发出即时通信系统,并且该服务器可以通过插件开发来进行扩展,接下来我们就了解一下怎样来创建自己的插件。

1、openfire源码配置这里就不再赘述,可以参照网上其他的相关资料,下载完openfire源码,源码目录为openfire_src编译完成后,找到openfire_src/src/plugins目录并添加插件文件夹shoudleLBS(该插件主要是记录用户的经纬度),如下:





2、插件内部目录如下:



其中src/database/shoudleLBS_mysql.sql 为该插件需要操作的数据库执行文件,由于数据库使用了mysql,故命名如此,也可以参照openfire中的sql文件。

sql文件如下:

INSERT INTO ofVersion (name, version) VALUES ('shoudleLBS', 0);

CREATE TABLE ofLocation (
id int(11) NOT NULL auto_increment,
username varchar(64) NOT NULL,
updatetime CHAR(15) NOT NULL,
lon double NOT NULL,
lat double NOT NULL,
PRIMARY KEY (id)
);


plugin.xml格式为插件的核心文件,在openfire启动后进行加载插件时,需要通过该xml文件来进行插件查找。本文的该xml文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<plugin>
<!-- Main plugin class -->//主要的插件类,该类是openfire加载的类,后面介绍怎么创建该类。
<class>cn.shoudle.openfire.plugin.ShoudleLBSPlugin</class>

<!-- Plugin meta-data -->
<name>OpenfireLBS Plugin</name> //名称;
<description>OpenfireLBS Plugin</description> //描述;
<author>render</author>        //作者;
<version>1.0</version>         //当前版本;
<date>10/29/2014</date>        //日期;
<minServerVersion>3.9.0</minServerVersion>  //支持openfire服务的最小版本;
<licenseType>Apache</licenseType>           //可选设置;

<adminconsole>                 //可选配置,配置后在服务端控制台中会出现该插件名称;
<tab id="tab-server">
<sidebar id="sidebar-server-manager">
<item id="openfire-lbs" name="openfire lbs"
description="record users lbs position" />
</sidebar>
</tab>
</adminconsole>

<databaseKey>shoudleLBS</databaseKey>    //需要配置,需要和<span style="font-size:18px;">shoudleLBS_mysql.sql下划线前面保持一致,用来加载该sql语句;</span>
<databaseVersion>0</databaseVersion>     //数据库版本设置;

</plugin>


3.插件基本配置完成后,我们需要创建插件类,也就是上文xml文件中类 ShoudleLBSPlugin。

由于本人用的是eclipse,右键openfire_src-> New -> Source Folder目录,创建源码目录如下:



创建包结构如上图所示:读者也可以根据自己的需求来进行创建包结构,但是需要保证该包结构与plugin.xml文件中的Main plugin class 保持一致。

4.创建类ShoudleLBSPlugin,来实现自定义插件类,代码如下:

package cn.shoudle.openfire.plugin;

import java.io.File;
import java.sql.Connection;
import java.sql.SQLException;

import org.jivesoftware.database.DbConnectionManager;
import org.jivesoftware.openfire.XMPPServer;
import org.jivesoftware.openfire.container.Plugin;
import org.jivesoftware.openfire.container.PluginManager;

/**
* Openfire LBS plugin
*
* @author render;
*
*/
public class ShoudleLBSPlugin implements Plugin {

private XMPPServer server;
Connection openfireDBConn;

@Override
public void initializePlugin(PluginManager manager, File pluginDirectory) {
try {
openfireDBConn = DbConnectionManager.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}

server = XMPPServer.getInstance();
}

@Override
public void destroyPlugin() {
server = XMPPServer.getInstance();

if (openfireDBConn != null) {
try {
openfireDBConn.close();
openfireDBConn = null;
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
插件类需要实现openfire中的接口类Plugin对象,重载initializePlugin()和destroyPlugin()函数。

5.自此插件创建完成,编译插件(后续讲解如何编译),运行openfire,可以发现数据库中多了一张新创建的表,并且控制台插件目录有我们刚刚创建的插件。





6.总结

由于本人项目需要,需要整合openfire服务器,刚刚接触,也摸索了好久,但是没有找到完整的资料,故自己整理一下,方便大家使用。如果有理解不够透彻的地方,望大家不啬赐教,谢谢,对了openfireLBS插件代码,在github有位大神开源了,这里忘记地址了,如果需要读者可以上去自行搜索!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: