插件開(kāi)發(fā)人員指南_第1頁(yè)
插件開(kāi)發(fā)人員指南_第2頁(yè)
插件開(kāi)發(fā)人員指南_第3頁(yè)
插件開(kāi)發(fā)人員指南_第4頁(yè)
插件開(kāi)發(fā)人員指南_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

插件開(kāi)發(fā)人員指南導(dǎo)言插件是增強(qiáng)Openfire功能。這份文件是一個(gè)開(kāi)發(fā)人員創(chuàng)建插件指南。結(jié)構(gòu)的一個(gè)插件插件存放在插件openfireHome名目。當(dāng)部署一個(gè)jar或war插件文件,它會(huì)自動(dòng)解壓安裝。該文件在插件名目結(jié)構(gòu)如下:插件結(jié)構(gòu)

myplugin/

|

-plugin.xml

插件定義文件

|-readme.html

任擇自述文件的插件,它會(huì)顯示給最終用戶(hù)

|-changelog.html

任擇修改文件的插件,它會(huì)顯示給最終用戶(hù)

|-icon_small.gif

可選?。?6x16)圖標(biāo)與插件(也能夠是PNG文件)

|-icon_large.gif

可選大(32x32)圖標(biāo)與插件(也能夠是PNG文件)

|classes/

資源的插件需要(即屬性文件)

|-database/

可選數(shù)據(jù)庫(kù)架構(gòu)文件,你需要插件

|-i18n/

插件國(guó)際化的語(yǔ)言配置。

|-lib/

您的插件的jar包

|-web

資源的治理操縱臺(tái)集成,假如有的話(huà)

|-WEB-INF/

|-web.xml

生成web.xml中含有編譯JSP的條目

|-web-custom.xml

可選用戶(hù)自定義的web.xml中的自定義servlets

|-images/

圖片文件存放的名目web名目存在的插件,需要添加到Openfire治理操縱臺(tái)。進(jìn)一步的細(xì)節(jié)如下。在plugin.xml文件規(guī)定的要緊插件類(lèi)。樣本文件看起來(lái)可能如下:樣本plugin.xml<?xmlversion="1.0"encoding="UTF-8"?><plugin>

<!—需要的插件類(lèi)-->

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

<!--插件元數(shù)據(jù)-->

<name>ExamplePlugin</name>

<description>Thisisanexampleplugin.</description>

<author>JiveSoftware</author>

<version>1.0</version>

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

<url>:///projects/openfire/plugins.jsp</url>

<minServerVersion>3.0.0</minServerVersion>

<licenseType>gpl</licenseType>

<!--治理操縱臺(tái)的條目-->

<adminconsole>

<!--Moreonthisbelow-->

</adminconsole></plugin>該元數(shù)據(jù)的領(lǐng)域,能夠設(shè)置在plugin.xml文件:

name

-插件的名稱(chēng)。

description

-插件的說(shuō)明。

author

-插件的作者。

version

-該插件的版本。

date

-公布日期如2006年7月1日。

url

-插件網(wǎng)址。

minServerVersion

-最低Openfire版本

databaseKey

-假如插件需要它自己的數(shù)據(jù)表,該databaseKey內(nèi)容應(yīng)設(shè)立一個(gè)架構(gòu)要緊名稱(chēng)(通常是相同名稱(chēng)的插件)。數(shù)據(jù)庫(kù)架構(gòu)文件為每個(gè)支持的數(shù)據(jù)庫(kù),然后放置在數(shù)據(jù)庫(kù)名目下的插件。例如,

“foo”,架構(gòu)文件將被稱(chēng)為“foo_mysql.sql”

,

“foo_oracle.sql”等等,我們建議您,您的表前綴of

,以幸免可能的沖突與其他應(yīng)用程序安裝在同一數(shù)據(jù)庫(kù)。腳本應(yīng)該進(jìn)入ofVersion表使用的關(guān)鍵,如此的架構(gòu)版本信息可跟蹤,例如:

INSERTINTOofVersion(name,version)VALUES('foo',0);

databaseVersion-數(shù)據(jù)庫(kù)版本號(hào)(假如數(shù)據(jù)庫(kù)模式的定義)。新的插件與數(shù)據(jù)庫(kù)架構(gòu)應(yīng)該開(kāi)始在版本。假現(xiàn)在后插件版本的需要更新,這些更新能夠定義創(chuàng)建子名目中的升級(jí)數(shù)據(jù)庫(kù)名目為每個(gè)版本。例如,名目database/upgrade/1和database/upgrade/2將包含腳本,如“foo_mysql.sql”和“foo_oracle.sql”中包含相關(guān)的數(shù)據(jù)庫(kù),為每一個(gè)版本的變化。每個(gè)腳本應(yīng)該更新版本中的信息ofVersion表,例如:

UPDATEofVersionsetversion=1wherename='foo';

parentPlugin-父層插件(作為“foo”的“foo.jar”插件)。當(dāng)一個(gè)插件有一個(gè)父插件,插件的類(lèi)加載器將被使用來(lái)而不是建立一個(gè)新的類(lèi)加載器。這可讓插件更加緊密地協(xié)同工作。子插件將可不能阻礙其父插件。

“l(fā)icenseType”:顯示許可協(xié)議,該插件是由。有效值如下:o

“commercial”:commercial

“商業(yè)”

:插件是下公布的商業(yè)許可協(xié)議。o

“gpl”:

“通用公共許可證”

:插件公布使用GNU公共授權(quán)(

GPL

)。o

“apache”

:該插件公布的Apache許可證。o

“internal”

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

“other”

:(其他)插件是許可下公布agrement不屬于其中的其他類(lèi)別。許可協(xié)議的細(xì)節(jié)應(yīng)該在插件的自述。假如許可證類(lèi)型未設(shè)置,這是假定其他。一些額外的文件都能夠在該插件提供更多資料,以最終用戶(hù)(所有放置在要緊的插件名目):

readme.html

-可選自述文件的插件,它會(huì)顯示給最終用戶(hù)。

changelog.html

-可選修改文件的插件,它會(huì)顯示給最終用戶(hù)。

icon_small.png

-可選?。?/p>

16x16

)圖標(biāo)相關(guān)插件。也能夠是。

GIF文件。

icon_large.png

-可選大(

32x32

)圖標(biāo)相關(guān)插件。也能夠是。

GIF文件。interfacefromthe

OpenfireAPI

aswellashaveadefault(noargument)contructor.您的插件類(lèi)必須執(zhí)行插件接口從Openfire的API

,以及有一個(gè)缺?。o(wú)參數(shù))

contructor

。插件接口方法初始化和銷(xiāo)毀插件。采樣插件執(zhí)行packageorg.example;

importorg.jivesoftware.openfire.container.Plugin;importorg.jivesoftware.openfire.container.PluginManager;

importjava.io.File;

/***AsamplepluginforOpenfire.*/publicclassExamplePluginimplementsPlugin{

publicvoidinitializePlugin(PluginManagermanager,FilepluginDirectory){

//您的代碼

}

publicvoiddestroyPlugin(){

//您的代碼

}}GeneralPluginBestPractices一樣插件最佳實(shí)踐在選擇軟件包的名稱(chēng)為您的插件,我們建議您選擇一些與眾不同的您和/或您的組織,以關(guān)心幸免沖突盡可能。例如,假如每個(gè)人去與org.example.PluginName

,即使PluginName是不同的,您可能會(huì)開(kāi)始投放到一些沖突在那個(gè)地點(diǎn)和那兒的類(lèi)名。專(zhuān)門(mén)是當(dāng)工作與聚類(lèi)。。修改治理操縱臺(tái)插件能夠添加標(biāo)簽,區(qū)段,和網(wǎng)頁(yè)的治理操縱臺(tái)。有幾個(gè)步驟,以完成這項(xiàng):

第一個(gè)<adminconsole/>必須添加到plugin.xml文件。

JSP的文件必須編制和實(shí)施的類(lèi)路徑的插件。阿web.xml中的匯編文件,其中包含的JSPservlet的條目必須付諸網(wǎng)頁(yè)/名目下的插件。注:

Openfire建立腳本能夠協(xié)助編制JSPs和制造web.xml中。這是詳細(xì)說(shuō)明如下。

任何圖像所需的JSP頁(yè)面必須住在網(wǎng)頁(yè)/圖像/名目。只有GIF和PNG圖像的支持。該<adminconsole/>部分plugin.xml定義額外的標(biāo)簽,科和項(xiàng)目治理操縱臺(tái)框架。抽樣plugin.xml文件看起來(lái)可能如下:樣本plugin.xml<?xmlversion="1.0"encoding="UTF-8"?><plugin>

<!--要緊插件類(lèi)-->

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

<!--治理操縱臺(tái)的條目-->

<adminconsole>

<tabid="mytab"name="Example"url="my-plugin-admin.jsp"description="Clicktomanage...">

<sidebarid="mysidebar"name="MyPlugin">

<itemid="my-plugin"name="MyPluginAdmin"

url="my-plugin-admin.jsp"

description="Clicktoadministersettingsformyplugin"/>

</sidebar>

</tab>

</adminconsole></plugin>在那個(gè)例子中,我們定義一個(gè)新的標(biāo)簽“范例”

,一個(gè)工具欄目“我的插件”和一個(gè)網(wǎng)頁(yè)“我的插件治理”

。我們差不多注冊(cè)的,插件admin.jsp頁(yè)面。您能夠覆蓋現(xiàn)有的標(biāo)簽,區(qū)段,項(xiàng)目利用現(xiàn)有的ID屬性值在自己的<adminconsole>定義。治理操縱臺(tái)最佳實(shí)踐有幾種最佳做法時(shí),需要考慮變更Openfire治理操縱臺(tái)通過(guò)一個(gè)插件??偟闹黝}是無(wú)縫集成的插件應(yīng)該:

集成到現(xiàn)有的標(biāo)簽和側(cè)欄節(jié)只要有可能不是創(chuàng)建自己的。只有制造新標(biāo)簽的專(zhuān)門(mén)重要的新功能。

不要用“插件”的名稱(chēng),標(biāo)簽,

sidebars和項(xiàng)目。例如,有一個(gè)項(xiàng)目叫做“網(wǎng)關(guān)插件”

,也可能是所謂的“網(wǎng)關(guān)設(shè)置”

。

嘗試以符合現(xiàn)有的用戶(hù)界面治理操縱臺(tái)在您的自定義插件的網(wǎng)頁(yè)。

沒(méi)有必要建立一個(gè)治理操縱臺(tái)進(jìn)入查看插件元數(shù)據(jù)。相反,讓Openfire告知用戶(hù)有關(guān)該插件安裝,并提供插件治理。寫(xiě)作網(wǎng)頁(yè)治理操縱臺(tái)Openfire使用Sitemesh框架裝飾網(wǎng)頁(yè)的治理操縱臺(tái)。全球定義的裝修適用于每個(gè)網(wǎng)頁(yè),以便使最終產(chǎn)出,如下面的圖:建立網(wǎng)頁(yè),與Sitemesh是容易的。只要?jiǎng)?chuàng)建有效的HTML頁(yè)面,然后使用中繼標(biāo)記來(lái)傳送指示Sitemesh

。當(dāng)渲染輸出,Sitemesh將使用您所提供的指示,使裝修的任何內(nèi)容,在您的HTML網(wǎng)頁(yè)。以下元標(biāo)記可用于:

pageID

-的ID的網(wǎng)頁(yè),其中必須符合入境治理操縱臺(tái)中的XML上文所述。要么pageID或subPageID

必須指定。

subPageID

-的ID小組網(wǎng)頁(yè),其中必須符合入境治理操縱臺(tái)中的XML上文所述。小組網(wǎng)頁(yè)用于行政行為涉及到父頁(yè)面編號(hào)。例如,編輯或刪除某一特定群體。要么pageID或subPageID

必須指定。

extraParams

(可選)

-額外的參數(shù),應(yīng)通過(guò)網(wǎng)頁(yè)。例如,在網(wǎng)頁(yè)上刪除一組可能的ID集團(tuán)。參數(shù)必須是URL編碼。

裝修(可選)

-覆寫(xiě)Sitemesh裝修使用的網(wǎng)頁(yè)。裝修沒(méi)有命名,將可提供簡(jiǎn)單的網(wǎng)頁(yè)沒(méi)有裝修。下面的HTML代碼段顯示了有效的網(wǎng)頁(yè):范例<html>

<head>

<title>MyPluginPage</title>

<metaname="pageID"content="myPluginPage"/>

</head>

<body>

Bodyhere!

</body>

</html>在您使用本土化插件這有可能把你的插件成多種語(yǔ)言化(

i18n

)。為此,請(qǐng)使用下列程序進(jìn)行:

創(chuàng)建一個(gè)“i18n”名目的根名目中的插件。

購(gòu)買(mǎi)每項(xiàng)資源文件,并使用%[plugin_name]%_i18n"_"language".properties"。屬性”命名約定,在那兒[plugin_name]的名字是插件名目中。見(jiàn)翻譯指南

,詳細(xì)了解資源包。

字符串轉(zhuǎn)換在您的JSP的文件指的是國(guó)際鑰匙。例如:

<%@tagliburi="://java.sun/jstl/core_rt"prefix="c"%>

<%@tagliburi="://java.sun/jstl/fmt_rt"prefix="fmt"%>

...

<fmt:messagekey=""/>

國(guó)際化在你的Java文件使用LocaleUtilsclass:

org.jivesoftware.util.LocaleUtils.getLocalizedString("","[plugin_name]");

國(guó)際化plugin.xml文件在您使用$

(葉)格式:

<sidebarid="gateways"name="${}"description="${plugin.sidebar.description}">

<description>${plugin.description}</description>使用Openfire構(gòu)建腳本在Openfire建立腳本將關(guān)心您建立和進(jìn)展插件。它看起來(lái)的插件開(kāi)發(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ù)庫(kù)腳本的插件

|-java

<-插件的Java源代碼

|

|-com

|

|-mycompany

|

|-*.java

|-web

|-*.jsp

<-jsp頁(yè)面

|-images/

<-圖片文件

|-WEB-INF

|-web.xml

<-可選的文件自定義servlets能夠注冊(cè)構(gòu)建腳本將編譯源文件和JSPs

,并建立有效的插件結(jié)構(gòu)和JAR文件。把你的插件名目中的

src

/插件名目下的源分布,然后用antplugins來(lái)建立您的插件。任何JAR文件的插件需要在匯編應(yīng)放到lib名目。這些JAR文件也將被復(fù)制到插件的生成lib名目的構(gòu)建過(guò)程的一部份。假如您創(chuàng)建一個(gè)src/web/WEB-INF/web.xml,注冊(cè)servlets初始化時(shí)啟動(dòng)插件。只有注冊(cè)的servlet和servlet的映在web.xml中的文件。注:此功能是通過(guò)合并執(zhí)行您的自定義web.xml中的檔案文件的web.xml中所產(chǎn)生的JSP的匯編過(guò)程。執(zhí)行您的插件插件完全進(jìn)入Openfire的API

。這提供了一個(gè)龐大的靈活性,什么插件能夠完成。然而,有幾個(gè)集成點(diǎn),這是最常見(jiàn)的:注冊(cè)一個(gè)插件作為一個(gè)組成部分

。元件接收所有數(shù)據(jù)包給某一特定子網(wǎng)域。例如,test_component.example。因此,數(shù)據(jù)包發(fā)送到j(luò)oe@test_component.example將交付給該組件。請(qǐng)注意,子域定義為組件無(wú)關(guān)的DNS條目的子域。所有的XMPP協(xié)議路由在套接字級(jí)別

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論