前言

在开发Openfire插件前需要构建完成服务器源码编辑环境,具体操作步骤请参照Openfire服务器源码编译的了解。

开发简单的Openfire插件

1、已构建完成的Openfire源码结构如下:

2、查看已有的插件结构,并生成自己的插件结构,转到Navigator视图下

已有插件目录结构

参照已有目录结构,创建自己的目录结构,在plugins目录邮件->New->Folder

3、在新建的simplePlugin目录右键->New->Folder

4、在切换至Package Explorer视图,在simplePlugin->src->java->右键->Build Path->Use as Sorurce Folder

结构如下:

5、创建插件类实现Plugin接口,在initializePlugin\destroyPlugin方法中,分别负责初始化插件和销毁插件

package org.jivesoftware.openfire.plugin;

import java.io.File;

import org.jivesoftware.openfire.container.Plugin;
import org.jivesoftware.openfire.container.PluginManager; public class SimplePlugin implements Plugin { private static PluginManager pluginManager; @Override
public void initializePlugin(PluginManager manager, File pluginDirectory) {
pluginManager = manager;
System.out.println("加载插件成功!");
} @Override
public void destroyPlugin() {
System.out.println("销毁插件成功!");
} }

6、从别的插件包下复制一个plugin.xml到simpleplugin文件夹下

plugin.xml内容如下

<?xml version="1.0" encoding="UTF-8"?>
<plugin>
<!--类的全包名-->
<class>org.jivesoftware.openfire.plugin.SimplePlugin</class>
<!--插件名称-->
<name>SimplePlugin</name>
<!--描述信息-->
<description>this is a SimplePlugin</description>
<!--作者信息-->
<author>Gm</author>
<!--版本信息-->
<version>1.0.0</version>
<!--创建、修改信息-->
<date>20/6/2017</date>
<!--最低兼容版本的openfire-->
<minServerVersion>4.2.3</minServerVersion>
</plugin>

7、从Window->show view->Ant,打开Ant视图,在Ant视图中,右键添加ant builder

8、在Ant视图中,展开Ant的节点,然后找到plugins,在pluins上右键Run As Ant Builder

至此,插件开发编译完成,到openfire_src\target\openfire\plugins下,找到生成的插件jar包,这就是生成的插件包,可以放在openfire服务器的plugins目录下,启动后就可以运行了

补充:本机默认编码为GBK,编译插件的时候出现以下错误:编码UTF8的不可映射字符

解决方案:

在build.xml头添加encoding="GBK",将javac encoding="utf8"改为encoding="GBK"

XMPP即时通讯协议使用(五)——搭建简单的Openfire插件的更多相关文章

  1. XMPP即时通讯协议使用(六)——开发Openfire聊天记录插件

    转载地址:http://www.cnblogs.com/hoojo/archive/2013/03/29/openfire_plugin_chatlogs_plugin_.html 开发环境: Sys ...

  2. XMPP即时通讯协议使用(前传)——协议详解

    XMPP详解 XMPP(eXtensible Messaging and Presence Protocol,可扩展消息处理和现场协议)是一种在两个地点间传递小型结构化数据的协议.在此基础上,XMPP ...

  3. XMPP即时通讯协议使用(十二)——基于xmpp搭建简单的局域网WebRTC

    创建HTML和JS ofwebrtc.html <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" ...

  4. XMPP即时通讯协议使用(七)——利用Strophe实现WebIM及strophe.plugins插件使用

    Strophe简介与Openfire配置 Strophe.js是为XMPP写的一个js类库.因为http协议本身不能实现持久连接,所以strophe利用BOSH模拟实现持久连接. 官方文档: http ...

  5. XMPP即时通讯协议使用(十)——好友关系状态

    sub  ask  recv 订阅 询问 接受 含义 substatus -1-  应该删除这个好友          Indicates that the roster item should be ...

  6. xmpp即时通讯协议的特性---长处和缺点!

    xmpp协议的定义? XMPP是一种基于标准通用标记语言的子集XML的协议,它继承了在XML环境中灵活的发展性. 因此.基于XMPP的应用具有超强的可扩展性.经过扩展以后的XMPP能够通过发送扩展的信 ...

  7. XMPP即时通讯协议使用(四)——Openfire服务器源码编译与添加消息记录保存

    下载Openfire源码 下载地址:https://www.igniterealtime.org/downloads/index.jsp,当前最新版本为:4.2.3 Eclipse上部署Openfir ...

  8. XMPP即时通讯协议使用(三)——订阅发布、断开重连与Ping

    package com.testV3; import java.util.List; import org.jivesoftware.smack.ConnectionListener; import ...

  9. XMPP即时通讯协议使用(十三)——获取当前在线用户或关闭指定用户

    1.开启REST API插件或根据需求修改其插件源码: 2.添加服务器->服务器管理->系统属性中添加 plugin.restapi.enabled=true 3.pom依赖 <de ...

随机推荐

  1. css:鼠标点击出现有颜色的边框?如何解决

    今天遇到上图这样出现有颜色的边框 解决办法: css设置属性 outline:none;

  2. 使用 Visual Studio 调试器附加到运行的进程

    为什么调试附加进程? Visual Studio 调试器可以附加到在 Visual Studio 外运行的进程. 可以使用此附加功能执行以下操作: 调试并非在 Visual Studio 中创建的应用 ...

  3. luogu P1047 校门外的树 x

    P1047 校门外的树 题目描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0 ...

  4. HTML基础入门学习

    上一篇给大家介绍了学习HTML的准备工作,本文开始带大家步入HTML的学习 一.HTML基础 网页的组成: HTML:页面构成 css:页面样式表现 JavaScript:交互行为 HTML简介: H ...

  5. 【2019ICPC西安邀请赛】J.And And And(点分治,贡献)

    题意:给定一棵n个点带边权的树,定义每条路径的值为路径上边权的异或和 如果一条路径的值为0,其对答案的贡献为所有包含这条路径的路径条数 求答案膜1e9+7 n<=1e5,0<=边权< ...

  6. 数据库的目录IDF打不开!附加失败

    选择附加数据库,结果 武汉地图打不开 这是mapgis k9里面自带的地图 IDF:Identity Definition File?https://zhidao.baidu.com/question ...

  7. 学习日记3、投机取巧使两个表的数据同时在一个treeGrid中显示

    不多说了直接上代码, $('#List').treegrid({ url: '@Url.Action("GetList")', width: $(window).width() - ...

  8. php面试专题---MYSQL查询语句优化

    php面试专题---MYSQL查询语句优化 一.总结 一句话总结: mysql的性能优化包罗甚广: 索引优化,查询优化,查询缓存,服务器设置优化,操作系统和硬件优化,应用层面优化(web服务器,缓存) ...

  9. I am going to India on a business trip

    I think English is very important,and learn it must perseverant.So I determined to write diary on Bo ...

  10. day13—CSS之导航栏

    转行学开发,代码100天——2018-03-29 见过这么多网页,没有导航栏的几乎没见过.因此,对导航栏的练习非常之必要. 导航栏的实现,基本上都是通过链接列表实现,即ul->li->a标 ...