0

我创建了一个 OSGi 包,它使用 apache commons dbcp2 创建一个数据库连接池。我使用 apache felix gogo 作为运行时来启动我的包。我已经将多个其他外部库毫无问题地加载到 apache felix 中:

图片在这里(不能发布没有代表): https ://i.gyazo.com/c779ccaba20e3fa327d61a621748d8dc.png

但是,每次我尝试启动捆绑包中需要的 dbcp2 捆绑包时,都会出现以下错误:

图片在这里(不能发布没有代表): https ://i.gyazo.com/ac7b673e63b9e6ad764af2e6adddb19a.png

我发现有一些可用的 Apache mixservice 包,但它包含 dbcp 1.4,我需要 dbcp 2.5.0 或更高版本。

需要做什么才能使 apache felix 能够将 dbcp2 作为其他项目所需的库加载?

4

1 回答 1

0

您在错误中看到的是 dbcp 包需要版本 >= 1.1.0 的 javax.transaction 包。这不是捆绑包中的错误。它只是意味着你需要在 OSGi 容器中提供这个包。

通常你会安装一个提供包的包。在这种情况下,包来自 jre,系统包应该导出它。

根据您启动 felix 的方式,导出系统包的方式会有所不同。例如,如果您使用 bndtools,您可以在 bndrun 文件中执行此操作。请参阅Enroute 微服务示例

对于普通的 felix,请参见参数“ org.osgi.framework.system.packages.extra ”。

在这个例子中,javax.transaction 包被导出(以及其他一些)。

于 2019-10-06T12:30:16.090 回答