我创建了一个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加载为其他项目所需的库?
您在错误中看到的是dbcp捆绑包要求版本> = 1.1.0的javax.transaction软件包。这不是捆绑包中的错误。这仅意味着您需要在OSGi容器中提供此软件包。
通常,您将安装提供该软件包的捆绑软件。在这种情况下,软件包来自jre,系统捆绑包应将其导出。
取决于您如何启动felix,导出系统软件包的方式有所不同。例如,如果使用bndtools,则在bndrun文件中执行此操作。参见Enroute microsevice example。
对于普通的felix,请参见参数“ org.osgi.framework.system.packages.extra”。
在此示例中,javax.transaction包已导出(在其他示例中)。