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

时间:2018-05-24 22:23:35

标签: java osgi karaf

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

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

  

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

1 个答案:

答案 0 :(得分:1)

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

<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