第 11 章 部署 Plain JAR

摘要

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

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

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

11.1. 使用 wrap Scheme 转换 JAR

概述

您可以使用 wrap: protocol(可以和任何现有 URL 格式)将 JAR 转换为捆绑包。wrap: protocol 基于 Bnd 工具程序。

语法

wrap: protocol 具有以下基本语法:

wrap:LocationURL

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

注意

wrap: protocol 还支持更协作的语法,它可让您通过在 URL 中指定 Bnd 属性文件或在 URL 中指定单独的 Bnd 属性来自定义转换。但是,嵌套: 协议与默认设置一起使用。

默认属性

wrap: protocol 基于 Bnd 工具程序,因此它使用完全相同的默认属性来生成捆绑包,就像 Bnd 一样。

wrap and install

以下示例演示了如何使用单个控制台命令从远程 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 的完整文档,请查看 Wrap Protocol 参考页面。