【问题标题】:start OSGI bundle programmatically in apache servicemix在 apache servicemix 中以编程方式启动 OSGI 包
【发布时间】:2014-01-12 11:29:29
【问题描述】:

Servicemix 专家。我需要一些指导。以下是我的问题场景。

一个 web 应用程序(webapp1)在 tomcat 容器中运行,并且在同一台机器上 servicemix(v4.5.3)正在执行。 我已经使用 apache cxf 在 servicemix 上部署了 Web 服务(ws1)。我从我的 web 应用程序(webapp1)中访问了 web 服务(ws1)。它工作正常。现在,我的问题是我想以编程方式在 servicemix 上启动另一个已经安装的包(简单的 java 应用程序)。我想编写业务逻辑以在 web 服务(ws1)中启动捆绑,以便当我点击 web 服务(ws1)时,它会启动该捆绑。

需要一些建议。

【问题讨论】:

    标签: java web-services osgi-bundle apache-servicemix


    【解决方案1】:

    如果您部署到 ServiceMix 的 Web 服务包使用 Spring 配置,您只需向任何 bean 添加属性(和 setter 方法)即可访问 BundleContext:

    <property name="bundleContext" ref="bundleContext" />
    

    BundleContext 让您可以访问一系列内容,在您的实例中使用getBundlegetBundles 方法获取所需的Bundle 对象,然后发出启动/停止等。

    【讨论】:

    • 我已经这样做了,但问题是在使用 bundleContext.getBundles() 获取包列表后,如何在不知道它的 ID 和位置的情况下获取特定包。我想用它的名字来捆绑。可能吗?我知道每个捆绑包都有唯一的 id,我们可以通过它获取捆绑包。
    • 当然,您可以根据清单条目使用其中一个或两个:bundle.getSymbolicName()bundle.getHeaders().get(org.osgi.framework.Constants.BUNDLE_NAME)
    猜你喜欢
    • 2016-01-25
    • 2018-04-17
    • 1970-01-01
    • 2011-06-08
    • 2014-12-01
    • 2017-06-02
    • 2018-12-28
    • 1970-01-01
    • 2015-02-06
    相关资源
    最近更新 更多