概述

Openfire插件开发是Openfire的精髓之一,支持插件热插拔,还可以方便的在web端进行管理插件。插件分为两种,一种是以服务为主的控制台插件,一种是包括页面或对外开放Servlet接口。这里我们先描述开发控制台插件。根据上一篇的源码部署(http://www.cnblogs.com/mvilplss/p/6005158.html)相信你已经成功部署好了,那么我们就开始写自己的插件吧!

准备

系统环境:window10(surface pro4)

JDK:1.7 or later

开发工具:eclipse-Mars.2 Release (4.5.2)

Openfire版本:4.0.3

步骤

在openfire源码中,我们看到很多自带的插件,我们就参考自带的插件进行开发。以下都是自带的插件。

我们参考上面插件的结构进行创建自己的一个插件目录。

l  在项目根部创建一个source folder。

l  文件名称folder name为:src/plugins/helloword/src/java

l  创建包,名称参考其他现有插件

l  创建一个类,实现Plugin接口

 package org.jivesoftware.openfire.plugin;

 import java.io.File;

 import org.jivesoftware.openfire.container.Plugin;
import org.jivesoftware.openfire.container.PluginManager; public class HelloPlugin implements Plugin{ @Override
public void initializePlugin(PluginManager manager, File pluginDirectory) {
System.out.println("HelloPlugin插件初始化成功");
} @Override
public void destroyPlugin() {
System.out.println("HelloPlugin插件销毁完毕");
} }

l  在src/plugins下找到helloword目录,参考其他插件,拷贝一个plugin.xml,修改对应的参数

 <?xml version="1.0" encoding="UTF-8"?>
<plugin>
<!-- 插件的class全称 -->
<class>org.jivesoftware.openfire.plugin.HelloPlugin</class> <!-- 插件的名称,在web管理显示插件的名称 -->
<name>Hello插件</name> <description>我的第一个Hello插件</description>
<author>mvilplss</author>
<version>0.0.1</version>
<date>11/1/2016</date> <!--插件最小兼容openfire的版本 -->
<minServerVersion>3.9.0</minServerVersion>
</plugin>

l  插件已经准备好,我们进行编译后运行。

l  参考上一篇文章,设为-Dplugin=helloword,选用plugin (build one plugin)。

l  点击Run,成功编译后,编译好的jar已经在指定的目录了,在控制台可以看到

l  运行openfire,如果打印出自己输出的文字则成功。

其他

在开发插件的过程中,如果用到第三方jar包,则只需在自己插件的plugin.xml文件同目录创建一个lib文件夹,将自己的jar包放到lib下并引入到项目即可,编译的时候就会自动打包到自己插件的jar中。

结束

第一个插件已经成功开发完成,openfire的插件开发还是非常简单的。在上面的介绍中,我把world写成word了,非常抱歉。

在后续的文章中会介绍如何开发web插件,聊天记录插件,广播插件等。

Openfire插件开发图解的更多相关文章

  1. openfire插件开发之完美开发

    http://redhacker.iteye.com/blog/1919329 一.说在前面 在继上篇Openfire3.8.2在eclipse中Debug方式启动最简单的方式后,我研究了openfi ...

  2. (转)openfire插件开发(二) 基于web的插件开发

    转:http://blog.csdn.net/lovexieyuan520/article/details/38935137 在前面的博客中,我介绍了openfire插件开发,在那篇博客中我详细的说明 ...

  3. openfire插件开发入门1

    .案例插件的功能 这个插件很简单,就是在openfire Server启动时,和关闭时,在控制台打印出消息. 3.插件开发的目录结构设计 先来看一下当前openfire在eclipse中的目录结构: ...

  4. (转)openfire插件开发(一)

    转:http://blog.csdn.net/lovexieyuan520/article/details/37774909 1. 在上一篇博文中,我介绍了Openfire3.9.3源代码导入ecli ...

  5. openfire插件开发的几点说明

    1.关于插件的目录结构 这个网上的资料很多,但是我觉得要看懂也不太容易,我这里上一个包括了jsp和servlet的图,希望大家能马上看懂: ME的Navigator视图下的截图: build path ...

  6. openfire插件开发环境

    创建java工程 SamplePlugin: package com.hoo.server.plugin; import java.io.File; import org.jivesoftware.o ...

  7. (转)openfire插件开发(三)通过http方式向openfire客户端发信息

    转:http://blog.csdn.net/hzaccp3/article/details/19964655 需求:  通过http方式,向openfire客户端发信息(非XMPP协议)openfi ...

  8. openfire插件开发1

    http://www.cnblogs.com/hoojo/archive/2013/03/29/openfire_plugin_chatlogs_plugin_.html http://www.cnb ...

  9. 在XMPP的JAVA开源实现Openfire中,增加LBS 附近的人功能

    1. XMPP协议 与 Openfire XMPP协议是IM领域的标准协议了,具体可参考  http://xmpp.org   及RFC6120,RFC6121,RFC6122等相关文档. http: ...

随机推荐

  1. React入门---属性(props)-8

    Props 和 State对于组件Component是非常重要的两个属性. 区别:State对于模块来说是 自身属性:   Props对于模块来说是 外来属性: 同样的,props也是只作用于当前的组 ...

  2. 比较容易理解的---原生js瀑布流

    最近一直在恶补基础JS H5 CSS3的基础知识 关于这个瀑布流: 本来打算看着教程来做的. 不过 感觉理解起来有点复杂. SO, 自己参考教程默写了一个.. 目前我所接触过的瀑布流布局分为2大类 主 ...

  3. (中级篇 NettyNIO编解码开发)第八章-Google Protobuf 编解码-2

    8.1.2    Protobuf编解码开发 Protobuf的类库使用比较简单,下面我们就通过对SubscrjbeReqProto进行编解码来介绍Protobuf的使用. 8-1    Protob ...

  4. 007---Hibernate基本映射标签和属性介绍

    一.映射文件的基本结构举例: <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-// ...

  5. Promise (2) 基本方法

    "I'm Captain Jack Sparrow" 加勒比海盗5上映,为了表示对杰克船长的喜爱,昨天闪现了几次模仿船长的走路姿势(哈哈哈,简直妖娆). 为了周天能去看电影,要赶紧 ...

  6. [HDU1020] Encoding - 加密

    Problem Description Given a string containing only 'A' - 'Z', we could encode it using the following ...

  7. java中File类中list()和listFiles()方法区别

    list()和listFiles()方法区别: 1.返回值类型不同:前者为String数组,后者为File对象数组 2.数组中元素内容不同:前者为string类型的[文件名](包含后缀名),后者为Fi ...

  8. html打造动画【系列1】- 萌萌的大白

    每个人心中都有一个暖暖的大白,blingbling的大眼睛~软软的肚子~宽厚的肩膀~善良的心肠~如果可以,我愿意沦陷在大白的肚子里永远不出来,哈哈~毛球要失宠咯~ 哈哈哈 每个人都是独立的个体,大白也 ...

  9. Dojo初探之5:dojo的request(请求)操作、请求过程事件绑定和隐藏数据data()操作(基于dojo1.11.2版本)

    前言: 上一章详细阐述了dojo的事件绑定操作,本章将讲解dojo的请求操作 注:dojo的请求操作与js和jquery完全不同! 1.dojo的请求 dojo通过request.get()/.put ...

  10. loadrunner学习理论之一

    1.负载测试.压力测试的区别? 答:负载测试是在被测系统所承受的正常范围内进行的 压力测试可以在极端的条件下进行 2.loadrunner的三大组件是什么,有什么作用? 答:虚拟用户生成器(virtu ...