国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Openfire插件開發(fā)人員指南

導言

插件是增強Openfire功能。這份文件是一個開發(fā)人員創(chuàng)建插件指南。

結(jié)構(gòu)的一個插件

插件存放在插件openfireHome目錄。當部署一個jarwar插件文件,它會自動解壓安裝。該文件在插件目錄結(jié)構(gòu)如下:

插件結(jié)構(gòu)

 

  myplugin / 
                 | - plugin.xml                             插件定義文件 
                 | - readme.html                           任擇自述文件的插件,它會顯示給最終用戶 
                 | - changelog.html                       任擇修改文件的插件,它會顯示給最終用戶 
                 | - icon_small.gif                        可選?。?16x16 )圖標與插件(也可以是 PNG文件) 
                 | - icon_large.gif                        可選大( 32x32 )圖標與插件(也可以是 PNG文件) 
                 | classes/                                    資源的插件需要(即屬性文件) 
                 | -database/                                可選數(shù)據(jù)庫架構(gòu)文件,你需要插件 
                 | -i18n/                                      插件國際化的語言配置。 
                 | -lib/                                       您的插件的jar包 
                 | -web                                     資源的管理控制臺集成,如果有的話 
                          | - WEB-INF/ 
                          | - web.xml                       生成web.xml中含有編譯JSP的條目 
                          | -web-custom.xml                       可選用戶自定義的web.xml中的自定義servlets 
                          | -images/                          圖片文件存放的目錄

web目錄存在的插件,需要添加到Openfire管理控制臺。進一步的細節(jié)如下。

plugin.xml文件規(guī)定的主要插件類。樣本文件看起來可能如下:

樣本plugin.xml

<?xml version="1.0" encoding="UTF-8"?>
<plugin>
    <!—要的插件類 -->
    <class>org.example.ExamplePlugin</class>
 
    <!-- 插件元數(shù)據(jù) -->
    <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>

該元數(shù)據(jù)的領域,可以設置在plugin.xml文件:

·         name               -插件的名稱。

·         description          -插件的說明。

·         author              -插件的作者。

·         version             -該插件的版本。

·         date                -發(fā)布日期200671。

·         url                  -插件網(wǎng)址。

·         minServerVersion    -最低Openfire版本

·         databaseKey        -如果插件需要它自己的數(shù)據(jù)表,該databaseKey內(nèi)容應設立一個架構(gòu)主要名稱(通常是相同名稱的插件)。數(shù)據(jù)庫架構(gòu)文件為每個支持的數(shù)據(jù)庫,然后放置在數(shù)據(jù)庫目錄下的插件。例如, foo”,架構(gòu)文件將被稱為“ foo_mysql.sql ” , “ foo_oracle.sql ”等等,我們建議您,您的表前綴of ,以避免可能的沖突與其他應用程序安裝在同一數(shù)據(jù)庫。腳本應該進入ofVersion表使用的關鍵,這樣的架構(gòu)版本信息可跟蹤,例如: 

INSERT INTO ofVersion (name, version) VALUES ('foo', 0); databaseVersion -數(shù)據(jù)庫版本號(如果數(shù)據(jù)庫模式的定義)。新的插件與數(shù)據(jù)庫架構(gòu)應該開始在版本。如果將來插件版本的需要更新,這些更新可以定義創(chuàng)建子目錄中的升級數(shù)據(jù)庫目錄為每個版本。例如,目錄database/upgrade/1database/upgrade/2將包含腳本,如“ foo_mysql.sql ”“ foo_oracle.sql ”中包含相關的數(shù)據(jù)庫,為每一個版本的變化。每個腳本應該更新版本中的信息ofVersion表,例如: 

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

·         parentPlugin -父層插件(作為“foo”“ foo.jar ”插件)。當一個插件有一個父插件,插件的類加載器將被使用來而不是建立一個新的類加載器。這可讓插件更加緊密地協(xié)同工作。插件將不會影響其父插件。

·         “licenseType”:顯示許可協(xié)議,該插件是由。有效值如下:

o    “commercial”commercial 商業(yè) :插件是下發(fā)布的商業(yè)許可協(xié)議。

o    “gpl” 通用公共許可證 :插件發(fā)布使用GNU公共授權(quán)( GPL 。

o    apache :該插件發(fā)布的Apache許可證。

o    internal :(內(nèi)部)插件是供內(nèi)部使用的一個組織只,并不會重新分配。

o    other :(其他)插件是許可下發(fā)布agrement不屬于其中的其他類別。許可協(xié)議的細節(jié)應該在插件的自述。

如果許可證類型未設置,這是假定其他。

一些額外的文件都可以在該插件提供更多資料,以最終用戶(所有放置在主要的插件目錄)

·         readme.html -可選自述文件的插件,它會顯示給最終用戶。

·         changelog.html -可選修改文件的插件,它會顯示給最終用戶。

·         icon_small.png -可選?。?/span> 16x16 )圖標相關插件。也可以是。 GIF文件。

·         icon_large.png -可選大( 32x32 )圖標相關插件。也可以是。 GIF文件。

interface from the Openfire API as well as have a default (no argument) contructor.您的插件類必須執(zhí)行插件接口從OpenfireAPI ,以及有一個缺?。o參數(shù)) contructor 。插件接口方法初始化和銷毀插件。

采樣插件執(zhí)行

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是不同的,您可能會開始投放到一些沖突在這里和那里的類名。尤其是當工作與聚類。

修改管理控制臺

插件可以添加標簽,區(qū)段,和網(wǎng)頁的管理控制臺。有幾個步驟,以完成這項:

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

·         JSP的文件必須編制和實施的類路徑的插件。web.xml的匯編文件,其中包含的JSP servlet的條目必須付諸網(wǎng)頁/目錄下的插件。注: Openfire建立腳本可以協(xié)助編制JSPs和創(chuàng)造web.xml中。這是詳細說明如下。

·         任何圖像所需的JSP頁面必須住在網(wǎng)頁/圖像/目錄。只有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>

在這個例子中,我們定義一個新的標簽范例 ,一個工具欄目我的插件和一個網(wǎng)頁我的插件管理 。我們已經(jīng)注冊的,插件admin.jsp頁面。您可以覆蓋現(xiàn)有的標簽,區(qū)段,項目利用現(xiàn)有的ID屬性值在自己的<adminconsole>定義。

管理控制臺最佳實踐

有幾種最佳做法時,需要考慮變更Openfire管理控制臺通過一個插件。總的主題是無縫集成的插件應該:

·         集成到現(xiàn)有的標簽和側(cè)欄節(jié)只要有可能不是創(chuàng)建自己的。只有創(chuàng)造新標簽的非常重要的新功能。

·         不要用插件的名稱,標簽, sidebars和項目。例如,有一個項目叫做網(wǎng)關插件 ,也可能是所謂的網(wǎng)關設置 。

·         嘗試以符合現(xiàn)有的用戶界面管理控制臺在您的自定義插件的網(wǎng)頁。

·         沒有必要建立一個管理控制臺進入查看插件元數(shù)據(jù)。相反,讓Openfire告知用戶有關該插件安裝,并提供插件管理。

寫作網(wǎng)頁管理控制臺

Openfire使用Sitemesh框架裝飾網(wǎng)頁的管理控制臺。全球定義的裝修適用于每個網(wǎng)頁,以便使最終產(chǎn)出,如下面的圖:

建立網(wǎng)頁,與Sitemesh是容易的。只要創(chuàng)建有效的HTML頁面,然后使用中繼標記來傳送指示Sitemesh 。當渲染輸出,Sitemesh將使用您所提供的指示,使裝修的任何內(nèi)容,在您的HTML網(wǎng)頁。以下元標記可用于:

·       pageID -ID的網(wǎng)頁,其中必須符合入境管理控制臺中的XML上文所述。要么pageIDsubPageID 必須指定。

·       subPageID -ID小組網(wǎng)頁,其中必須符合入境管理控制臺中的XML上文所述。小組網(wǎng)頁用于行政行為涉及到父頁面編號。例如,編輯或刪除某一特定群體。要么pageIDsubPageID 必須指定。

·       extraParams (可選) -額外的參數(shù),應通過網(wǎng)頁。例如,在網(wǎng)頁上刪除一組可能的ID集團。參數(shù)必須是URL編碼。

·       裝修(可選) -覆寫Sitemesh裝修使用的網(wǎng)頁。裝修沒有命名,將可提供簡單的網(wǎng)頁沒有裝修。

下面的HTML代碼段顯示了有效的網(wǎng)頁:

范例

<html>
   <head>
       <title>My Plugin Page</title>
 
       <meta name="pageID" content="myPluginPage"/>
   </head>
   <body>
        Body here!
   </body>
   </html>

在您使用本土化插件

這有可能把你的插件成多種語言化( i18n 。為此,請使用下列程序進行:

·   創(chuàng)建一個i18n目錄的根目錄中的插件。

·   購買每項資源文件,并使用%[plugin_name]%_i18n "_" language ".properties"。屬性命名約定,在那里[ plugin_name ]的名字是插件目錄中。翻譯指南 ,詳細了解資源包。

·   字符串轉(zhuǎn)換在您的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構(gòu)建腳本

Openfire建立腳本將幫助您建立和發(fā)展插件。它看起來的插件開發(fā)目錄格式如下:

插件結(jié)構(gòu)

myplugin/
 |- plugin.xml      <-插件定義文件
 |- readme.html     <-插件自述文件
 |- changelog.html <-插件修改的日志
 |- icon_small.gif <- 縮略圖片(16x16) 
|- icon_large.gif <-圖片 (32x32) 
 |- classes/         <-資源的插件需要(即屬性文件)
 |- lib/              <- 
 |- src/
     |- database      <-可選的數(shù)據(jù)庫腳本的插件
     |- java           <- 插件的Java源代碼
     |   |- com
     |       |- mycompany
     |           |- *.java
     |- web
         |- *.jsp          <- jsp頁面
         |- images/       <- 圖片文件
         |- WEB-INF
             |- web.xml    <-可選的文件自定義servlets可以注冊

構(gòu)建腳本將編譯源文件和JSPs ,并建立有效的插件結(jié)構(gòu)和JAR文件。把你的插件目錄中 src /插件目錄下的源分布,然后用antplugins來建立您的插件。

任何JAR文件的插件需要在匯編應放到lib目錄。這些JAR文件也將被復制到插件的生成lib目錄的構(gòu)建過程的一部份。

如果您創(chuàng)建一個src/web/WEB-INF/web.xml,注冊servlets初始化時啟動插件。只有注冊的servletservlet的映在web.xml中的文件。注:此功能是通過合并執(zhí)行您的自定義web.xml中的檔案文件的web.xml中所產(chǎn)生的JSP的匯編過程。

執(zhí)行您的插件

插件完全進入OpenfireAPI 這提供了一個巨大的靈活性,什么插件可以完成。然而,有幾個集成點,這是最常見的:

  1. 注冊一個插件作為一個組成部分 。元件接收所有數(shù)據(jù)包給某一特定子網(wǎng)域。例如,test_component.example.com。因此,數(shù)據(jù)包發(fā)送到joe@test_component.example.com將交付給該組件。請注意,子域定義為組件無關的DNS條目的子域。所有的XMPP協(xié)議路由在套接字級別是使用主服務器域( example.com在上面的例子) ;子域僅用于路由的XMPP協(xié)議的服務器。
  2. 注冊一個插件作為IQHandler 智商處理回應智商包特別元素的名稱和命名空間。下面的代碼片斷演示了如何注冊一個IQHandler
   IQHandler myHandler = new MyIQHander();
 IQRouter iqRouter = XMPPServer.getInstance().getIQRouter();
 iqRouter.addHandler(myHandler);

 

  1. 注冊一個插件作為PacketInterceptor接收所有數(shù)據(jù)包被通過該系統(tǒng),并有選擇地予以拒絕。例如,一個攔截可以拒絕所有的郵件或載褻瀆國旗他們審查的管理員。
  2. 您可以儲存持續(xù)插件設置Openfire屬性使用JiveGlobals.getProperty (字符串)和JiveGlobals.setProperty (字符串,字符串)的方法。讓您的插件屬性聽眾收聽改變其性質(zhì),執(zhí)行org.jivesoftware.util.PropertyEventListener方法。您可以注冊您的插件作為一個聽者使用PropertyEventDispatcher.addListener  PropertyEventListener )方法。一定要注冊您的插件作為聽眾在您的插件的destroyPlugin )方法。

插件常見問題解答

我是否可以部署一個插件目錄不是一jar?

不,所有的插件必須部署Jar文件或WAR文件。當插件的一個jarwar不存在, Openfire假設該文件已被刪除,而用戶要銷毀插件,所以它也刪除了目錄。

什么是插件許可協(xié)議受?

由于Openfire是下發(fā)布的開源GPL許可,任何插件發(fā)達國家也必須在GPL許可下發(fā)布或兼容的開源許可證如果您分發(fā)插件以外的組織。這是違反了許可協(xié)議,以創(chuàng)建插件分配不開源。請訪問jive software如果您需要不同的授權(quán)條款Openfire的權(quán)利,包括建立商業(yè)插件。

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Operfire 安裝指南
Openfire服務端源代碼開發(fā)配置指南
全網(wǎng)最全的NotePad 配置(適用于Python程序設計)
Notepad++如何調(diào)試VBS腳本
命令行運行R語言腳本(代碼)
Building Plugins for iOS 為iOS創(chuàng)建插件
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服