现在的位置: 首页 > 综合 > 正文

Openfire插件开发人员指南

2013年09月04日 ⁄ 综合 ⁄ 共 5941字 ⁄ 字号 评论关闭

 

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目录的根目录中的插件。

·

抱歉!评论已关闭.