代码之家  ›  专栏  ›  技术社区  ›  John Lippson

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

  •  0
  • John Lippson  · 技术社区  · 6 年前

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

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

    组织。奥斯基。框架BundleException:在Bundle NativeCode的值中找不到本机代码子句:*

    1 回复  |  直到 6 年前
        1
  •  1
  •   Achim Nierbeck    6 年前

    首先,如果两个bundle使用相同的“依赖项”,则通过导入包声明这些依赖项,而不是嵌入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