文档章节

XMPP学习笔记-LESSON-007:XMPPServer.java之Plugin开发

今幕明
 今幕明
发布于 2014/02/21 12:05
字数 668
阅读 100
收藏 1

网上关于openfire开发的文字非常多,在这里推荐一篇文章:

http://redhacker.iteye.com/blog/1919329

openfire插件开发之完美开发

这是单独开发openfire插件的的一个实例。

不过我个人还是建议在原有的openfire源码上,保持源码结构的形式来开发openfire插件。这样在编译或者修改插件的时候,可以直接用openfire的编译命令来编译,更有利于源码库的管理。当然这是个人之见。

下面还是讲讲如何从代码层面开发of插件吧。

前一章,我们讲过插件管理器,初步了解了插件管理器的作用和生命周期,现在我们来看一下插件到底是什么?

插件就是Plugin(废话),plugin是插件的接口,这个接口定义了2个方法,初始化和注销。这在上一节插件管理器启动的时候有所提及,这也是插件的生命周期。简单来说,实现了这两个接口的对象就是一个of插件组件了。具体如何管理和运行,这就不用插件开发人员管了?想想,这里存在什么设计模式呢?模板?开发android的都知道,类似activity,activity可以说是集设计模式之大成者,改天会具体聊聊。

言归正传!

查看pluginmanager,loadPlugin:

首先载入plugin.xml , 这是插件的入口,来看看plugin.xml的配置,这也是很关键的地点:
以fastpath为例:
<!--编码设置,指定utf-8,pluginmanager中指定过  setEncoding("UTF-8")  -->
<?xml version="1.0" encoding="UTF-8"?>

<plugin>

   <!--指定插件类名,
      demo: String className = pluginXML.selectSingleNode("/plugin/class").getText().trim();

    -->       

   <class>org.jivesoftware.openfire.fastpath.FastpathPlugin</class>
    <name>Fastpath Service</name> <!--插件名称-->
    <description>Support for managed queued chat requests, such as a support team might use.</description>
    <author>Jive Software</author><!--插件开发者-->
    <version>4.2.0</version>
    <date>12/2/2009</date>
    <minServerVersion>3.7.0</minServerVersion>
    <databaseKey>fastpath</databaseKey> <!-- 参看getDatabaseKey方法-->
    <databaseVersion>0</databaseVersion>
    
    <adminconsole>
        ....<!--略 配置插件关联的页面-->
    </adminconsole>
</plugin>

可以参考以下资料,写的非常好,我这里讲讲如何在代码写:

1,主要理由XMPPServer这个单例的实例来获取相关manager对象,然后进行操作,比如connectionmanager等,然后通过这些接口来进行保存和设置数据。其中涉及openfire的核心代码,比如provider等,这些以后继续研究。

今天有些急躁,简单写了写。

可猛戳!


参考:

1,跟我一步一步开发自己的Openfire插件
http://www.cnblogs.com/hoojo/archive/2013/03/07/2947502.html

2,Openfire插件开发人员指南
http://www.360doc.com/content/10/0707/15/1332348_37445649.shtml





© 著作权归作者所有

今幕明
粉丝 46
博文 224
码字总数 39350
作品 0
朝阳
程序员
私信 提问
XMPP学习笔记-LESSON-006:XMPPServer.java之PluginManager

昨天看完module的流程和开发,就不得不提plugin了,而在了解plugin之前,还需要先看pluginManager。 pluginManager主要负责插件的载入,启动,关闭。 在XMPPserver对象中,声明了pluginManag...

今幕明
2014/02/20
0
0
XMPP学习笔记-LESSON-003:XMPPServer.java之initialize​

上文讲到,ServerStarter通过java反射机制,实例化org.jivesoftware.openfire.XMPPServer,在xmppserver构造函数中,调用start方法,,开始了服务之旅. 首先,我们来看看start方法中,XMPPServer...

今幕明
2014/01/26
0
0
XMPP学习笔记-LESSON-005:XMPPServer.java之Module

上面讨论过Xmppserver有以下3个方法: loadModules(); // Initize all the modules initModules(); // Start all the modules startModules(); 意思很简单,载入模块,初始化,启动模块。 如何...

今幕明
2014/02/19
188
0
XMPP学习笔记-LESSON-001: run on eclipse

之前也一直研究openfire,不过更多的是根据实际情况做些具体修改,以及具体操作,比如用户整合,服务器设置等,闲散的弄了几月,最近考虑系统的学习xmpp。 在学习本章之前,先看了一周的xmp...

今幕明
2014/01/23
0
0
XMPP学习笔记-LESSON-004:openfire之编译简介

of的使用非常简单,便捷,由于开源,下载源码后也可以随意修改,于是编译也就有了了解的必要。 of的构建工具是ant,所以前提你需要下载apache ant,并配置好环境。在此之前,建议了解一下ant...

今幕明
2014/02/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

高并发场景下的缓存有哪些常见的问题?

一、缓存一致性问题 当数据时效性要求很高时,需要保证缓存中的数据与数据库中的保持一致,而且需要保证缓存节点和副本中的数据也保持一致,不能出现差异现象。 这就比较依赖缓存的过期和更新...

别打我会飞
25分钟前
1
0
List list = new ArrayList()为何父类引用指向子类对象(多态)

态:要有继承,方法的重写,父类引用指向子类对象 疑问一:父类引用指向子类对象 与指向父类对象 Animal cat = new Cat(); //向上转型。 父类引用指向子类对象,该引用不能再访问子类新增加的...

architect刘源源
25分钟前
2
0
分而治之-快速排序

快速排序的思想: 快速排序首先在数组中确定1个枢纽项(比如数组中的第一个元素),将大于该枢纽项的元素放到右侧,小于该枢纽项的元素放到左侧,这样枢纽项将数组划分成两部分。接着继续对划...

万山红遍
今天
5
0
Qt编写自定义控件9-导航按钮控件

前言 导航按钮控件,主要用于各种漂亮精美的导航条,我们经常在web中看到导航条都非常精美,都是html+css+js实现的,还自带动画过度效果,Qt提供的qss其实也是无敌的,支持基本上所有的CSS2属...

飞扬青云
今天
4
0
Python开发工具:pyJasper

原文:https://www.oschina.net/p/pyjasper 前言 pyJasper是 JasperReports 网络服务器的 Python 客户端。 pyJasper 是一组 Python 基础工具,可以用来处理 JasperReports 报表 。因为 Jasper...

A_裙232550246
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部