plugin.xml 文件

XML 清单文件中描述了一个称为 plugin.xml 的插件,它是插件部署文件的一部分。 清单文件告诉门户网站应用程序的运行时它需要知道什么才能注册和激活插件。 清单文件基本上充当可插入组件与门户网站应用程序的运行时之间的合同。 尽管 WebSphere® Application Server plugin.xml 紧跟为 Eclipse 工作台提供的服务器,但它在多个位置与 Eclipse 工作台不同。

位置

plugin.xml文件必须位于 Web 应用程序存在的目录层次结构上下文下的 WEB-INF 目录中,或者当包含在 Web 应用程序归档文件中时。 该plugin.xml文件必须位于根目录中plugin.xml文件放在 Enterprise JavaBeans Java™ 归档 (JAR) 文件或共享库 JAR 文件中。 扩展注册表服务包括plugin.xml在应用程序服务器上装入并启动参与组件时的文件。

使用说明

  • 该文件是只读的吗?

  • 该文件是由产品组件更新的吗?

    ???

  • 如果是,什么触发其更新?

    Rational Application Developer 更新web.xml将 Web 组件组装到 Web 模块中,或者修改 Web 组件或 Web 模块的属性时的文件。

  • 如何及何时使用该文件的内容?

    WebSphere Application Server 函数在 Web 应用程序开发的配置和部署阶段使用此文件中的信息。

  • 清单标记定义使用各种命名标记和标识。 为消除不明确性,下面提供了这些命名约定的产生规则。 通常,所有标识都是区分大小写的。
    SimpleToken := sequence of characters from ('a-z','A-Z','0-9') 
    ComposedToken := SimpleToken | (SimpleToken '.' ComposedToken) 
    PlugInId := ComposedToken
    PlugInPrereq := PlugInId 
    ExtensionId := SimpleToken 
    ExtensionPointId := SimpleToken 
    ExtensionPointReference := ExtensionPointId | (PlugInId '.' ExtensionPointId)
    

样本文件条目

完整的插件清单 DTD 如下。 XML 模式不用于定义清单,因为插件的当前 Eclipse 工具需要 DTD。 XML DTD 构造规则元素 * 表示元素出现零次或多次; 元素? 表示元素出现零次或一次; 元素 + 表示元素出现一次或多次。

<?xml encoding="US-ASCII"?>  

<!ELEMENT plugin (requires?, extension-point*, extension*)> 
<!ATTLIST plugin 
		name	CDATA #IMPLIED
		id	CDATA #REQUIRED 
		version	CDATA #REQUIRED 
		provider-name	CDATA #IMPLIED
>
<!ELEMENT requires (import+)>
<!ELEMENT import EMPTY>
<!ATTLIST import
		plugin	CDATA #REQUIRED
		version	CDATA #IMPLIED
		match	(exact | compatible | greaterOrEqual) #IMPLIED
>
<!ELEMENT extension-point EMPTY>  
<!ATTLIST extension-point 
		name	CDATA #IMPLIED
		id	CDATA #REQUIRED    
		schema	CDATA #IMPLIED 
>
<!ELEMENT extension ANY>
<!ATTLIST extension 
		point	CDATA #REQUIRED 
		id	CDATA #IMPLIED
		name	CDATA #IMPLIED
>

WebSphere Application Server 差别

plugin.xml文件紧跟plugin.xml为 Eclipse 工作台提供的文件。 但是,它在下列元素中偏离了。
plugin元素
此清单中提供的 plugin 元素不包含类属性。 类属性不是必需的,因为插件机制不要求插件开发者扩展或使用任何特定类,而这对于 Eclipse 工作台是要求的。 另外,plugin 元素不包含运行时元素,因为一些标准(例如,J2EE)已定义应用程序的运行时库位置。
import元素
requires 元素不包含 export 属性,因为建议 J2EE 模块为自包含的以提高可管理性。 除了不带有 export 属性之外,match 属性有一个选项用于版本的更高或相等匹配 (greaterOrEqual)。
extension-point元素
extension-point 元素将名称属性作为可选部分,因为它在此 J2EE 实现中没有实际的用途。

可以在“平台插件开发者指南”>“其他参考信息”>“插件清单”下面的 Eclipse 文档中找到有关插件清单的详细信息。

以下是扩展点可以如何完成将链接添加至现有页面这一任务的示例。 此插件的插件清单声明扩展点 (linkExtensionPoint) 和对此扩展点的扩展 (linkExtension)。 声明扩展点的插件不必是实现该扩展点的插件。 另一个插件也可以通过以下方式在插件清单中定义对该链接扩展点的扩展:将 <extension> 和 </extension> 标记的内容包括在其清单中。
<?xml version="1.0"?>
<!--the plugin id is derived from the vendor domain name --> 
<plugin
			id="com.ibm.ws.console.core" 
			version="1.0.0" 
			provider-name="IBM WebSphere">

		<!--declaration of prerequisite plugins-->
	<requires>
  		<import plugin="com.ibm.data" version="2.0.1" match="compatible"/>
   	<import plugin="com.ibm.resources" version="3.0" match="exact"/>
	</requires>

	<!--declaration of link extension point --> 
	<extension-point 
				id="linkExtensionPoint" 
				schema="/schemas/linkSchema.xsd"/>


	<!--declaration of an extension to the link extension point -->
	<extension 
				point="com.ibm.ws.console.core.linkExtensionPoint" 
				id="linkExtension">

			<link               
					label="Example.displayName" 
					actionView="com.ibm.ws.console.servermanagement.forwardCmd.do?
								forwardName=example.config.view&
								lastPage=ApplicationServer.config.view">
			</link>
	</extension>
</plugin>