版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
插件开发人员指南导言插件是增强Openfire功能。这份文件是一个开发人员创建插件指南。结构的一个插件插件存放在插件openfireHome名目。当部署一个jar或war插件文件,它会自动解压安装。该文件在插件名目结构如下:插件结构
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<?xmlversion="1.0"encoding="UTF-8"?><plugin>
<!—需要的插件类-->
<class>org.example.ExamplePlugin</class>
<!--插件元数据-->
<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>
<!--治理操纵台的条目-->
<adminconsole>
<!--Moreonthisbelow-->
</adminconsole></plugin>该元数据的领域,能够设置在plugin.xml文件:
name
-插件的名称。
description
-插件的说明。
author
-插件的作者。
version
-该插件的版本。
date
-公布日期如2006年7月1日。
url
-插件网址。
minServerVersion
-最低Openfire版本
databaseKey
-假如插件需要它自己的数据表,该databaseKey内容应设立一个架构要紧名称(通常是相同名称的插件)。数据库架构文件为每个支持的数据库,然后放置在数据库名目下的插件。例如,
“foo”,架构文件将被称为“foo_mysql.sql”
,
“foo_oracle.sql”等等,我们建议您,您的表前缀of
,以幸免可能的冲突与其他应用程序安装在同一数据库。脚本应该进入ofVersion表使用的关键,如此的架构版本信息可跟踪,例如:
INSERTINTOofVersion(name,version)VALUES('foo',0);
databaseVersion-数据库版本号(假如数据库模式的定义)。新的插件与数据库架构应该开始在版本。假现在后插件版本的需要更新,这些更新能够定义创建子名目中的升级数据库名目为每个版本。例如,名目database/upgrade/1和database/upgrade/2将包含脚本,如“foo_mysql.sql”和“foo_oracle.sql”中包含相关的数据库,为每一个版本的变化。每个脚本应该更新版本中的信息ofVersion表,例如:
UPDATEofVersionsetversion=1wherename='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文件。interfacefromthe
OpenfireAPI
aswellashaveadefault(noargument)contructor.您的插件类必须执行插件接口从Openfire的API
,以及有一个缺省(无参数)
contructor
。插件接口方法初始化和销毁插件。采样插件执行packageorg.example;
importorg.jivesoftware.openfire.container.Plugin;importorg.jivesoftware.openfire.container.PluginManager;
importjava.io.File;
/***AsamplepluginforOpenfire.*/publicclassExamplePluginimplementsPlugin{
publicvoidinitializePlugin(PluginManagermanager,FilepluginDirectory){
//您的代码
}
publicvoiddestroyPlugin(){
//您的代码
}}GeneralPluginBestPractices一样插件最佳实践在选择软件包的名称为您的插件,我们建议您选择一些与众不同的您和/或您的组织,以关心幸免冲突尽可能。例如,假如每个人去与org.example.PluginName
,即使PluginName是不同的,您可能会开始投放到一些冲突在那个地点和那儿的类名。专门是当工作与聚类。。修改治理操纵台插件能够添加标签,区段,和网页的治理操纵台。有几个步骤,以完成这项:
第一个<adminconsole/>必须添加到plugin.xml文件。
JSP的文件必须编制和实施的类路径的插件。阿web.xml中的汇编文件,其中包含的JSPservlet的条目必须付诸网页/名目下的插件。注:
Openfire建立脚本能够协助编制JSPs和制造web.xml中。这是详细说明如下。
任何图像所需的JSP页面必须住在网页/图像/名目。只有GIF和PNG图像的支持。该<adminconsole/>部分plugin.xml定义额外的标签,科和项目治理操纵台框架。抽样plugin.xml文件看起来可能如下:样本plugin.xml<?xmlversion="1.0"encoding="UTF-8"?><plugin>
<!--要紧插件类-->
<class>org.example.ExamplePlugin</class>
<!--治理操纵台的条目-->
<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>在那个例子中,我们定义一个新的标签“范例”
,一个工具栏目“我的插件”和一个网页“我的插件治理”
。我们差不多注册的,插件admin.jsp页面。您能够覆盖现有的标签,区段,项目利用现有的ID属性值在自己的<adminconsole>定义。治理操纵台最佳实践有几种最佳做法时,需要考虑变更Openfire治理操纵台通过一个插件。总的主题是无缝集成的插件应该:
集成到现有的标签和侧栏节只要有可能不是创建自己的。只有制造新标签的专门重要的新功能。
不要用“插件”的名称,标签,
sidebars和项目。例如,有一个项目叫做“网关插件”
,也可能是所谓的“网关设置”
。
尝试以符合现有的用户界面治理操纵台在您的自定义插件的网页。
没有必要建立一个治理操纵台进入查看插件元数据。相反,让Openfire告知用户有关该插件安装,并提供插件治理。写作网页治理操纵台Openfire使用Sitemesh框架装饰网页的治理操纵台。全球定义的装修适用于每个网页,以便使最终产出,如下面的图:建立网页,与Sitemesh是容易的。只要创建有效的HTML页面,然后使用中继标记来传送指示Sitemesh
。当渲染输出,Sitemesh将使用您所提供的指示,使装修的任何内容,在您的HTML网页。以下元标记可用于:
pageID
-的ID的网页,其中必须符合入境治理操纵台中的XML上文所述。要么pageID或subPageID
必须指定。
subPageID
-的ID小组网页,其中必须符合入境治理操纵台中的XML上文所述。小组网页用于行政行为涉及到父页面编号。例如,编辑或删除某一特定群体。要么pageID或subPageID
必须指定。
extraParams
(可选)
-额外的参数,应通过网页。例如,在网页上删除一组可能的ID集团。参数必须是URL编码。
装修(可选)
-覆写Sitemesh装修使用的网页。装修没有命名,将可提供简单的网页没有装修。下面的HTML代码段显示了有效的网页:范例<html>
<head>
<title>MyPluginPage</title>
<metaname="pageID"content="myPluginPage"/>
</head>
<body>
Bodyhere!
</body>
</html>在您使用本土化插件这有可能把你的插件成多种语言化(
i18n
)。为此,请使用下列程序进行:
创建一个“i18n”名目的根名目中的插件。
购买每项资源文件,并使用%[plugin_name]%_i18n"_"language".properties"。属性”命名约定,在那儿[plugin_name]的名字是插件名目中。见翻译指南
,详细了解资源包。
字符串转换在您的JSP的文件指的是国际钥匙。例如:
<%@tagliburi="://java.sun/jstl/core_rt"prefix="c"%>
<%@tagliburi="://java.sun/jstl/fmt_rt"prefix="fmt"%>
...
<fmt:messagekey=""/>
国际化在你的Java文件使用LocaleUtilsclass:
org.jivesoftware.util.LocaleUtils.getLocalizedString("","[plugin_name]");
国际化plugin.xml文件在您使用$
(叶)格式:
<sidebarid="gateways"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初始化时启动插件。只有注册的servlet和servlet的映在web.xml中的文件。注:此功能是通过合并执行您的自定义web.xml中的档案文件的web.xml中所产生的JSP的汇编过程。执行您的插件插件完全进入Openfire的API
。这提供了一个庞大的灵活性,什么插件能够完成。然而,有几个集成点,这是最常见的:注册一个插件作为一个组成部分
。元件接收所有数据包给某一特定子网域。例如,test_component.example。因此,数据包发送到joe@test_component.example将交付给该组件。请注意,子域定义为组件无关的DNS条目的子域。所有的XMPP协议路由在套接字级别
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论