第 11 章 部署 Plain JAR

摘要

将应用部署到 Apache Karaf 的替代方法是使用普通 JAR 文件。这些通常是 不包含部署元数据 的库。普通 JAR 不是 WAR,也不是 OSGi 捆绑包。

如果作为捆绑包的依赖项进行普通 JAR,您必须将捆绑包标头添加到 JAR。如果 JAR 公开了公共 API,通常的最佳解决方案是将现有的 JAR 转换为捆绑包,使 JAR 能够与其他捆绑包共享。使用本章中的说明,使用开源 Bnd 工具自动执行转换过程。

有关 Bnd 工具的更多信息,请参阅 Bnd 工具网站

11.1. 使用嵌套方案转换 JAR

概述

您可以选择使用 wrap: 协议将 JAR 转换为捆绑包,该协议可用于任何现有 URL 格式。嵌套: 协议基于 Bnd 工具。

语法

嵌套: 协议有以下基本语法:

wrap:LocationURL

The wrap: 协议可以加上任何查找 JAR 的 URL 前缀。URL 的定位部分 LocationURL 用于获取普通 JAR 和嵌套的 URL 处理程序 协议,然后自动将 JAR 转换为捆绑包。

注意

嵌套: 协议还支持更详细的语法,它允许您通过指定第二属性文件或在 URL 中指定单独的 Bnd 属性来自定义转换。但是,一般情况下,换行: 协议仅与默认设置一起使用。

默认属性

wrap: 协议基于 Bnd 工具,因此它使用完全相同的默认属性生成捆绑包,因为 Bnd 的作用。

嵌套并安装

以下示例演示了如何使用单个控制台命令从远程 Maven 存储库下载普通 commons-logging JAR,动态将其转换为 OSGi 捆绑包,然后安装它并在 OSGi 容器中启动:

karaf@root> bundle:install -s wrap:mvn:commons-logging/commons-logging/1.1.1

参考

结束: 协议由 Pax 项目提供,该项目 是各种开源 OSGi 工具的 umbrella 项目。有关 嵌套的完整文档: 协议,请参阅 Wrap Protocol 参考页面。