`
iluoxuan
  • 浏览: 580031 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

2:openfire插件开发--文档

 
阅读更多

1:按上面部署成功 会看到 有很多插件实现的。

 

Openfire插件开发人员指南

导言

插件是增强Openfire功能。这份文件是一个开发人员创建插件指南。

结构的一个插件

插件存放在插件openfireHome目录。当部署一个jarwar插件文件,它会自动解压安装。该文件在插件目录结构如下:

插件结构

 

  myplugin / 
                 | - plugin.xml                            
插件定义文件 
                 | - readme.html                           
任择自述文件的插件,它会显示给最终用户 
                 | - changelog.html                      
任择修改文件的插件,它会显示给最终用户 
                 | - icon_small.gif                        
可选小( 16x16 )图标与插件(也可以是 PNG文件) 
                 | - icon_large.gif                       
可选大( 32x32 )图标与插件(也可以是 PNG文件) 
                 | classes/                                    
资源的插件需要(即属性文件) 
                 | -database/                               
可选数据库架构文件,你需要插件 
                 | -i18n/                                     
插件国际化的语言配置。 
                 | -lib/                                      
您的插件的jar 
                 | -web                                    
资源的管理控制台集成,如果有的话 
                          | - WEB-INF/ 
                          | - web.xml                      
生成web.xml中含有编译JSP的条目 
                          | -web-custom.xml                      
可选用户自定义的web.xml中的自定义servlets 
                          | -images/                         
图片文件存放的目录

web目录存在的插件,需要添加到Openfire管理控制台。进一步的细节如下。

plugin.xml文件规定的主要插件类。样本文件看起来可能如下:

样本plugin.xml

<?xml version="1.0" encoding="UTF-8"?>

<plugin>

    <!—要的插件类 -->

    <class>org.example.ExamplePlugin</class>

 

    <!-- 插件元数据 -->

    <name>Example Plugin</name>

    <description>This is an example plugin.</description>

    <author>Jive Software</author>

 

    <version>1.0</version>

    <date>07/01/2006</date>

    <url>http://www.igniterealtime.org/projects/openfire/plugins.jsp</url>

    <minServerVersion>3.0.0</minServerVersion>

    <licenseType>gpl</licenseType>

 

    <!-- 管理控制台的条目 -->

    <adminconsole>

        <!-- More on this below -->

    </adminconsole>

</plugin>

该元数据的领域,可以设置在plugin.xml文件:

·         name               -插件的名称。

·         description          -插件的说明。

·         author              -插件的作者。

·         version             -该插件的版本。

·         date                -发布日期如200671日。

·         url                  -插件网址。

·         minServerVersion    -最低Openfire版本

·         databaseKey        -如果插件需要它自己的数据表,该databaseKey内容应设立一个架构主要名称(通常是相同名称的插件)。数据库架构文件为每个支持的数据库,然后放置在数据库目录下的插件。例如, “foo”,架构文件将被称为“ foo_mysql.sql ”  “ foo_oracle.sql ”等等,我们建议您,您的表前缀of ,以避免可能的冲突与其他应用程序安装在同一数据库。脚本应该进入ofVersion表使用的关键,这样的架构版本信息可跟踪,例如: 

INSERT INTO ofVersion (name, version) VALUES ('foo', 0); databaseVersion -数据库版本号(如果数据库模式的定义)。新的插件与数据库架构应该开始在版本。如果将来插件版本的需要更新,这些更新可以定义创建子目录中的升级数据库目录为每个版本。例如,目录database/upgrade/1database/upgrade/2将包含脚本,如“ foo_mysql.sql ”“ foo_oracle.sql ”中包含相关的数据库,为每一个版本的变化。每个脚本应该更新版本中的信息ofVersion表,例如: 

UPDATE ofVersion set version=1 where name='foo';

·         parentPlugin -父层插件(作为“foo”“ foo.jar ”插件)。当一个插件有一个父插件,插件的类加载器将被使用来而不是建立一个新的类加载器。这可让插件更加紧密地协同工作。子插件将不会影响其父插件。

·         “licenseType”:显示许可协议,该插件是由。有效值如下:

o    “commercial”commercial 商业 :插件是下发布的商业许可协议。

o    “gpl” 通用公共许可证 :插件发布使用GNU公共授权( GPL )。

o    “apache” :该插件发布的Apache许可证。

o    “internal” :(内部)插件是供内部使用的一个组织只,并不会重新分配。

o    “other” :(其他)插件是许可下发布agrement不属于其中的其他类别。许可协议的细节应该在插件的自述。

如果许可证类型未设置,这是假定其他。

一些额外的文件都可以在该插件提供更多资料,以最终用户(所有放置在主要的插件目录):

·         readme.html -可选自述文件的插件,它会显示给最终用户。

·         changelog.html -可选修改文件的插件,它会显示给最终用户。

·         icon_small.png -可选小( 16x16 )图标相关插件。也可以是。 GIF文件。

·         icon_large.png -可选大( 32x32 )图标相关插件。也可以是。 GIF文件。

interface from the Openfire API as well as have a default (no argument) contructor.您的插件类必须执行插件接口从OpenfireAPI ,以及有一个缺省(无参数) contructor 。插件接口方法初始化和销毁插件。

采样插件执行

package org.example;

 

import org.jivesoftware.openfire.container.Plugin;

import org.jivesoftware.openfire.container.PluginManager;

 

import java.io.File;

 

/**

 * A sample plugin for Openfire.

 */

public class ExamplePlugin implements Plugin {

 

    public void initializePlugin(PluginManager manager, File pluginDirectory) {

        //您的代码

 

    }

 

    public void destroyPlugin() {

        //您的代码

    }

}

General Plugin Best Practices一般插件最佳实践

在选择软件包的名称为您的插件,我们建议您选择一些与众不同的您和/或您的组织,以帮助避免冲突尽可能。例如,如果每个人去与org.example.PluginName ,即使PluginName是不同的,您可能会开始投放到一些冲突在这里和那里的类名。尤其是当工作与聚类。

修改管理控制台

插件可以添加标签,区段,和网页的管理控制台。有几个步骤,以完成这项:

·         第一个<adminconsole/>必须添加到plugin.xml文件。

·         JSP的文件必须编制和实施的类路径的插件。阿web.xml的汇编文件,其中包含的JSP servlet的条目必须付诸网页/目录下的插件。注: Openfire建立脚本可以协助编制JSPs和创造web.xml中。这是详细说明如下。

·         任何图像所需的JSP页面必须住在网页/图像/目录。只有GIFPNG图像的支持。

<adminconsole />部分plugin.xml定义额外的标签,科和项目管理控制台框架。抽样plugin.xml文件看起来可能如下:

样本plugin.xml

<?xml version="1.0" encoding="UTF-8"?>

<plugin>

    <!--主要插件类-->

    <class>org.example.ExamplePlugin</class>

    <!--管理控制台的条目-->

    <adminconsole>

        <tab id="mytab" name="Example" url="my-plugin-admin.jsp" description="Click to manage...">

            <sidebar id="mysidebar" name="My Plugin">

               <item id="my-plugin" name="My Plugin Admin"

                   url="my-plugin-admin.jsp"

                   description="Click to administer settings for my plugin" />

            </sidebar>

        </tab>

    </adminconsole>

</plugin>

在这个例子中,我们定义一个新的标签范例 ,一个工具栏目我的插件和一个网页我的插件管理 。我们已经注册的,插件admin.jsp页面。您可以覆盖现有的标签,区段,项目利用现有的ID属性值在自己的<adminconsole>定义。

管理控制台最佳实践

有几种最佳做法时,需要考虑变更Openfire管理控制台通过一个插件。总的主题是无缝集成的插件应该:

·         集成到现有的标签和侧栏节只要有可能不是创建自己的。只有创造新标签的非常重要的新功能。

·         不要用插件的名称,标签, sidebars和项目。例如,有一个项目叫做网关插件 ,也可能是所谓的网关设置 

·         尝试以符合现有的用户界面管理控制台在您的自定义插件的网页。

·         没有必要建立一个管理控制台进入查看插件元数据。相反,让Openfire告知用户有关该插件安装,并提供插件管理。

写作网页管理控制台

Openfire使用Sitemesh框架装饰网页的管理控制台。全球定义的装修适用于每个网页,以便使最终产出,如下面的图:

建立网页,与Sitemesh是容易的。只要创建有效的HTML页面,然后使用中继标记来传送指示Sitemesh 。当渲染输出,Sitemesh将使用您所提供的指示,使装修的任何内容,在您的HTML网页。以下元标记可用于:

·       pageID -ID的网页,其中必须符合入境管理控制台中的XML上文所述。要么pageIDsubPageID 必须指定。

·       subPageID -ID小组网页,其中必须符合入境管理控制台中的XML上文所述。小组网页用于行政行为涉及到父页面编号。例如,编辑或删除某一特定群体。要么pageIDsubPageID 必须指定。

·       extraParams (可选) -额外的参数,应通过网页。例如,在网页上删除一组可能的ID集团。参数必须是URL编码。

·       装修(可选) -覆写Sitemesh装修使用的网页。装修没有命名,将可提供简单的网页没有装修。

下面的HTML代码段显示了有效的网页:

范例

<html>

   <head>

       <title>My Plugin Page</title>

 

       <meta name="pageID" content="myPluginPage"/>

   </head>

   <body>

        Body here!

   </body>

   </html>

在您使用本土化插件

这有可能把你的插件成多种语言化( i18n )。为此,请使用下列程序进行:

·   创建一个“i18n”目录的根目录中的插件。

·   购买每项资源文件,并使用%[plugin_name]%_i18n "_" language ".properties"。属性命名约定,在那里[ plugin_name ]的名字是插件目录中。见翻译指南 ,详细了解资源包。

·   字符串转换在您的JSP的文件指的是国际钥匙。例如:         

<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>

    <%@ taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt" %>

        ...

    <fmt:message key="some.key.name" />

·   国际化在你的Java文件使用LocaleUtils class 
org.jivesoftware.util.LocaleUtils.getLocalizedString("some.key.name", "[plugin_name]");

·   国际化plugin.xml文件在您使用$ (叶)格式: 
<sidebar id="gateways" name="${plugin.sidebar.name}" description="${plugin.sidebar.description}">
<description>${plugin.description}</description>

使用Openfire构建脚本

Openfire建立脚本将帮助您建立和发展插件。它看起来的插件开发目录格式如下:

插件结构

myplugin/

 |- plugin.xml      <-插件定义文件

 |- readme.html     <-插件自述文件

 |- changelog.html <-插件修改的日志

 |- icon_small.gif <- 缩略图片(16x16)

|- icon_large.gif <-图片 (32x32)

 |- classes/         <-资源的插件需要(即属性文件)

 |- lib/              <-

 |- src/

     |- database      <-可选的数据库脚本的插件

     |- java           <- 插件的Java源代码

     |   |- com

     |       |- mycompany

     |           |- *.java

     |- web

         |- *.jsp          <- jsp页面

         |- images/       <- 图片文件

         |- WEB-INF

             |- web.xml    <-可选的文件自定义servlets可以注册

构建脚本将编译源文件和JSPs ,并建立有效的插件结构和JAR文件。把你的插件目录中 src /插件目录下的源分布,然后用antplugins来建立您的插件。

任何JAR文件的插件需要在汇编应放到lib目录。这些JAR文件也将被复制到插件的生成lib目录的构建过程的一部份。

如果您创建一个src/web/WEB-INF/web.xml,注册servlets初始化时启动插件。只有注册的servletservlet的映在web.xml中的文件。注:此功能是通过合并执行您的自定义web.xml中的档案文件的web.xml中所产生的JSP的汇编过程。

执行您的插件

插件完全进入OpenfireAPI 。这提供了一个巨大的灵活性,什么插件可以完成。然而,有几个集成点,这是最常见的:

  1. 注册一个插件作为一个组成部分 。元件接收所有数据包给某一特定子网域。例如,test_component.example.com。因此,数据包发送到joe@test_component.example.com将交付给该组件。请注意,子域定义为组件无关的DNS条目的子域。所有的XMPP协议路由在套接字级别是使用主服务器域( example.com在上面的例子) ;子域仅用于路由的XMPP协议的服务器。
  2. 注册一个插件作为IQHandler 。智商处理回应智商包特别元素的名称和命名空间。下面的代码片断演示了如何注册一个IQHandler

   IQHandler myHandler = new MyIQHander();

 IQRouter iqRouter = XMPPServer.getInstance().getIQRouter();

 iqRouter.addHandler(myHandler);

 

  1. 注册一个插件作为PacketInterceptor接收所有数据包被通过该系统,并有选择地予以拒绝。例如,一个拦截可以拒绝所有的邮件或载亵渎国旗他们审查的管理员。
  2. 您可以储存持续插件设置Openfire属性使用JiveGlobals.getProperty (字符串)和JiveGlobals.setProperty (字符串,字符串)的方法。让您的插件属性听众收听改变其性质,执行org.jivesoftware.util.PropertyEventListener方法。您可以注册您的插件作为一个听者使用PropertyEventDispatcher.addListener  PropertyEventListener )方法。一定要注册您的插件作为听众在您的插件的destroyPlugin ()方法。

插件常见问题解答

我是否可以部署一个插件目录不是一jar

不,所有的插件必须部署Jar文件或WAR文件。当插件的一个jarwar不存在, Openfire假设该文件已被删除,而用户要销毁插件,所以它也删除了目录。

什么是插件许可协议受?

由于Openfire是下发布的开源GPL许可,任何插件发达国家也必须在GPL许可下发布或兼容的开源许可证如果您分发插件以外的组织。这是违反了许可协议,以创建插件分配不开源。请访问jive software如果您需要不同的授权条款Openfire的权利,包括建立商业插件。

 

分享到:
评论

相关推荐

    openfire插件开发环境搭建

    标题中的“openfire插件开发环境搭建”是指学习和配置Openfire服务器以开发自定义插件的过程。Openfire是一款开源的即时通讯服务器,基于XMPP(Extensible Messaging and Presence Protocol)协议,允许用户进行实时...

    openfire开发文档

    总结,Openfire插件开发涉及的主要知识点包括: - Openfire架构和插件系统 - Java编程基础 - XMPP协议理解 - MyEclipse的使用 - Ant构建工具 - Openfire源码阅读与理解 - Java服务注册与事件监听 - 数据库访问和XML...

    openfire插件

    在"openfire_plugin"这个压缩包中,我们很可能会找到一系列与Openfire插件开发相关的源代码文件。这些文件通常包含以下几个部分: 1. **主类(Main Class)**:这是插件的核心部分,负责加载和初始化插件。它继承自...

    openfire详细开发文档

    理解XMPP的基本原理和工作流程对于开发Openfire插件或与其交互的应用至关重要。 2. **服务器架构**:Openfire采用模块化的架构设计,包括用户管理、认证、会话管理、多用户聊天、推送等模块。开发者需要了解这些...

    openfire插件开发人员指南

    以下是对Openfire插件开发核心概念的详细解释: 1. **插件结构**: 插件的基本结构包括一个包含所有必要组件的文件夹。其中,`plugin.xml`是定义插件的关键文件,`readme.html`和`changelog.html`是供用户查看的...

    openfire插件开发.pdf

    插件开发文档中提到了多个技术要点和工具,其中涉及到的技术和工具有WinXP操作系统、MyEclipse 6.5集成开发环境、Java Development Kit (JDK) 1.5和1.6版本、MySQL数据库、Openfire服务器版本3.6.3等。 首先,开发...

    openfire-gojara-plugin:实施XEP-0321-远程名册管理

    综上所述,"openfire-gojara-plugin"是一个基于JavaScript的Openfire插件,实现了XEP-0321协议,允许用户跨服务器管理名册。开发者和管理员可以通过持续集成和问题跟踪机制参与到项目的维护和改进中,以优化其在实际...

    openfire 插件简单示例

    本示例将带你走进Openfire插件开发的世界,通过一个简单的Servlet插件来介绍开发流程。 首先,我们需要理解Openfire插件的基本结构。一个Openfire插件通常包含以下几个部分: 1. **Plugin.java**:这是插件的核心...

    第一个openfire插件源码及说明

    通过这个简单的教程,初学者可以快速上手Openfire插件开发,理解其核心原理,并逐渐掌握更复杂的插件功能。随着经验的积累,你将能够开发出满足各种需求的Openfire插件,丰富和增强Openfire服务器的功能。

    openfire简单插件

    **一、Openfire插件开发环境搭建** 在开始开发之前,我们需要搭建Openfire源码环境。首先,你需要在Openfire官网(https://www.igniterealtime.org/projects/openfire/)下载源码。解压后,利用Eclipse或IntelliJ ...

    openfire插件Demo

    Openfire是一款开源、基于Java的即时通讯服务器,它支持XMPP...在实际操作中,建议先阅读Openfire的官方文档,了解插件开发的详细流程和最佳实践,同时参考"SavePlugin"示例中的代码,逐步理解并应用到自己的项目中。

    openfire二次开发问题分析及解决

    #### 二、Openfire插件开发问题分析与解决 ##### 2.1 插件开发分析 Openfire为了方便用户的二次开发扩展,提供了强大的插件支持模式。一般来说,可以通过开发插件的方式来扩展Openfire的功能,并且大多数情况下...

    openfire-red5-spark-rtmps-required-files

    【标题】"openfire-red5-spark-rtmps-required-files" 涉及到的是一个针对企业内部通信的二次开发项目,它结合了Openfire、Red5和Spark这三款工具,以提供更加定制化的实时通信解决方案。 Openfire是一款开源的即时...

    OpenFire二次开发环境搭建

    ### OpenFire二次开发环境搭建详解 #### 一、概述 OpenFire是一款开源的企业级即时通讯服务器,基于XMPP协议标准,适用于多种应用场景。对于开发者来说,掌握如何搭建OpenFire的二次开发环境至关重要,这不仅有助...

    openfire开发文档.pdf

    本篇开发文档详细介绍了Openfire的安装、环境配置、源代码研究、功能扩展以及与客户端的调试方法。 首先,文档详细说明了进行Openfire开发所需的初始准备工作,包括安装Java开发工具包(JDK)、集成开发环境...

    openfire servlet插件

    在Openfire插件开发中,Servlet插件主要用于处理HTTP相关的请求,如提供Web服务接口、实现RESTful API等。 Openfire中的Servlet插件可以被配置成监听特定的URL路径,当接收到对应的HTTP请求时,插件将被调用执行...

    openfire 聊天记录插件 archive(java 源码)

    `archive-1.0.5-javadoc.jar`则提供了该插件的API文档,它是开发人员理解代码结构、类库以及方法的重要参考资料。通过阅读Javadoc,我们可以了解到插件提供的公共接口,如添加、查询和管理聊天记录的方法,以及如何...

    openfire源码

    9. **文档与社区**:由于是开源项目,Openfire有详细的文档供开发者参考,同时有一个活跃的社区,用户可以在这里提问、分享经验、获取帮助。 10. **版本控制**:`Openfire-master`这个文件名暗示了这是Openfire的...

    openfire tar包

    Openfire是一款基于开源Apache许可证的实时协作...在实际部署中,用户需要根据自身需求选择合适的操作系统,下载名为"openfire"的压缩包,解压后按照官方文档进行安装和配置,从而享受到Openfire带来的高效协作体验。

    openfire企业版插件

    - **插件开发**:了解如何编写和打包Openfire插件,以及如何通过`plugin.xml`文件定义插件行为。 - **分布式缓存**:通过Coherence的使用,可能涉及数据缓存策略和高可用性设计。 - **数据库集成**:与数据库的...

Global site tag (gtag.js) - Google Analytics