【问题标题】:Apache felix cannot load dbcp2 as bundleApache felix 无法将 dbcp2 作为包加载
【发布时间】:2019-10-06 11:02:16
【问题描述】:

我创建了一个 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 作为其他项目所需的库加载?

【问题讨论】:

  • 最好将此类错误消息上传到粘贴箱或类似的文本内容服务中,而不是图像。这样可以更轻松地复制其中的一部分以引用答案中的错误。

标签: osgi jdbc-pool dbcp


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2016-01-15
    • 1970-01-01
    • 2017-06-16
    • 2016-03-25
    • 2019-01-28
    • 2014-11-10
    • 1970-01-01
    • 2013-07-14
    • 2017-03-17
    相关资源
    最近更新 更多