OSGI 将bundle嵌入到 Karaf 容器中而不是单个模块?



我正在使用OSGI/Karaf生态系统。最初,我将同一个罐子嵌入到两个不同的捆绑包中。事实上,这两个捆绑包利用这个嵌入式 jar 中的类共享数据,我得到了类转换异常。假设这是由于嵌入了同一jar的两个不同实例。(Classloader问题?

我的想法是将其安装到容器中并让捆绑包使用它。我有两个问题,第一个是这个罐子不是捆绑包,第二个问题是..我找到了这个jar的服务组合版本,但出现以下错误:

org.osgi.framework.BundleException:在 Bundle-NativeCode 的值中找不到本机代码子句: *

首先,如果两个捆绑包使用相同的"依赖关系",则通过 Import-Package 声明这些依赖关系,而不是嵌入 jar。 其次,如果您想一次性安装捆绑包列表,请使用 Apache Karaf 提供的功能。 请参阅此处的文档或简单示例:

<feature name="my-project" version="1.0.0">
<feature>other</feature>
<bundle start-level="80" start="false">mvn:com.mycompany.myproject/myproject-dao</bundle>
<bundle start-level="85" start="false">mvn:com.mycompany.myproject/myproject-service</bundle>
</feature>

另一种方法是通过以下方式简单地安装依赖包本身:

bundle:install mvn:com.mycompany.myproject/myproject-dao

最新更新