【问题标题】:OSGi in embedded mode exposing jars which are present in main application嵌入式模式下的 OSGi 暴露主应用程序中存在的 jars
【发布时间】:2012-12-07 04:11:53
【问题描述】:

我有一个以嵌入式模式运行 Apache Felix OSGi 的 struts2 应用程序。是否可以将主 webapp 中的 jar 文件公开给 OSGi 包?否则我将不得不部署相同的 jar 文件两次,一次包含在主应用程序的 webapp 类路径中,然后再次部署为嵌入的 Felix OSGi 容器中的包。

【问题讨论】:

    标签: struts2 osgi apache-felix


    【解决方案1】:

    是的。你当然可以做到这一点。但是,在 webapp 中嵌入 OSGi 容器存在一些已知问题。这是因为 webapp 的类加载器上下文是非标准的。我一直在使用一个做同样事情的应用程序。如果我能够从头开始编写应用程序,我不会这样做。相反,我会将 Struts2 部署为 OSGi 包本身,以及其他所有内容。换句话说,我会完全接受 OSGi 模块化运行时。

    话虽如此,OSGi 容器本身就是一个包,并且可以像任何包一样导出包。它被称为“系统包”,您可以将“主机”应用程序的类加载器中的包指定为通过系统包导出到 OSGi 容器的包。

    查看此page 上的示例,并搜索此配置参数。

    Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA
    

    此配置参数包含主机应用程序的类加载器中的包列表,这些包应该可用于您的 osgi 包。

    至于“问题”,请参阅这些链接作为开始:

    A good description of the embedded in a webapp dangers.

    Specifics about classloader issues.

    【讨论】:

      猜你喜欢
      • 2010-10-04
      • 2016-10-03
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-01
      • 1970-01-01
      相关资源
      最近更新 更多