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

眉间皱痕 提交于 2019-11-30 08:22:41

网上关于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





标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!