openfire插件二次开发配置

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有位大神开源了,这里忘记地址了,如果需要读者可以上去自行搜索!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值