可以手动创建 Liberty 功能部件并将其安装到 Liberty。
关于此任务
一个功能部件可以由单个 OSGi 捆绑软件和一个功能部件清单文件组成。此示例向应用程序提供一个库,以便外部包在缺省应用程序类路径上可视。通过将功能部件清单复制到
${wlp.user.dir}/extension/lib/features 目录,并将 OSGi 捆绑软件复制到 ${wlp.user.dir}/extension/lib 目录,可以将该功能部件安装到 Liberty。然后,可以在 server.xml 文件中使用该功能部件。
有关功能部件清单文件格式的详细信息,请参阅 Liberty 功能部件清单文件。
此示例描述如何手动构造 Liberty 功能部件。或者,可使用 WebSphere® Application Server Developer Tools。请参阅 使用开发者工具来创建 Liberty 功能部件。
过程
要手动创建 Liberty 功能部件,请完成以下步骤:
- 例如,创建 OSGi 捆绑软件(其中包含 Java™ 类以及具有相应 OSGi 头的捆绑软件清单文件),以导出您想要向应用程序提供的 Java 包。Bundle-SymbolicName 是唯一的必需头;此条目根据反向域名名称约定来指定捆绑软件的唯一标识。较好的实践是指定捆绑软件的版本,而在此示例中,导出了一些 Java 包以供应用程序使用:
Bundle-SymbolicName: com.usr.samplebundle
Bundle-Version: 1.0.1
Export-Package: com.usr.samplebundle.pkg1; version="1.0.0",
com.usr.samplebundle.pkg2; version="1.0.1"
- 使用 jar 命令来封装 Java 类和功能部件清单文件。例如:
jar cfm samplebundle.jar MANIFEST.Mf *.class
- 创建功能部件清单文件 feature-name.mf,用来向运行时环境描述功能部件。
- 提供所需的清单头:
- Subsystem-SymbolicName,用来指定功能部件的标识和可视性;
- Subsystem-Content,用来查找构成功能部件的文件;
- IBM-Feature-Version,用来标识运行时环境所需功能部件支持的版本。
- 最佳实践:添加可选清单头以指示子系统规范的适用版本 (Subsystem-ManifestVersion)、功能部件版本 (Subsystem-Version) 和功能部件短名称 (IBM-ShortName)。指定这些值将帮助您在将来对功能部件进行升级。
- 在 IBM-API-Package 头中,列出要在应用程序的缺省类装入器上提供的包。
- 可选: 当您创建 Liberty 功能部件时,将它安装到用户产品扩展,然后该功能部件中的包都可以供用户产品扩展中安装的任何其他功能部件访问。要使一个或多个 SPI 包可供其他产品扩展中的功能部件使用,请在 IBM-SPI-Package 头中列出这些包。
Subsystem-ManifestVersion: 1.0
Subsystem-SymbolicName: com.example.myfeature.sample-1.0; visibility:=public
Subsystem-Version: 1.0.0.qualifier
Subsystem-Type: osgi.subsystem.feature
Subsystem-Content: samplebundle; version="[1,1.0.100)"
IBM-Feature-Version: 2
IBM-API-Package: com.usr.samplebundle.pkg1; type="api",
com.usr.samplebundle.pkg2; type="api"
IBM-SPI-Package: com.sample.myservice.spi;IBM-ShortName: sample-1.0
- 将捆绑软件复制到 ${wlp.user.dir}/extension/lib 目录。
- 将功能部件清单复制到 ${wlp.user.dir}/extension/lib/features 目录。
- 如果在功能部件清单文件中定义了 Subsystem-Name 和 Subsystem-Description 头,并且对值进行了本地化,请将 Subsytem-Localization 头中所指定的本地化文件复制到 ${wlp.user.dir}/extension/lib/features/l10n 目录。
结果
将功能部件安装到 Liberty 之后,您可以将功能部件名称添加到
server.xml 文件中已配置的功能部件列表。例如:
<featureManager>
<feature>usr:sample-1.0</feature>
</featureManager>