【问题标题】:Can you have JSF custom components in different OSGi bundles?您可以在不同的 OSGi 包中包含 JSF 自定义组件吗?
【发布时间】:2010-09-17 05:55:16
【问题描述】:

有人同时使用过 OSGi 和 JSF 吗?

我问是因为 JSF 使用类加载器魔法来查找自定义组件。来自一个教程(强调我的):

这个配置文件将结束 在 META-INF/faces-config.xml .jar 文件代表这个 零件。 JSF 会寻找这样的 每个 .jar 文件中的文件名 在运行时加载(在 .war 文件的 WEB-INF/lib 目录) 并在其中使用它们中的每一个 配置。这样一来,多 组件 .jar 文件可以合并 到一个 Web 应用程序中,以及所有 每个 .jar 中描述的组件 将可供应用程序使用。

我希望能够将 JSF 自定义组件作为 OSGi 包(即自定义组件与 JSF 运行时位于不同的 OSGi 包中),并且 JSF 能够在运行时找到这些。

有没有人做过类似的事情?

【问题讨论】:

    标签: java jsf osgi


    【解决方案1】:

    可以通过以下方式:

    • 您的 Web osgi 包必须在 MANIFEST.MF 中有“Require-Bundle”,指向包含组件的包
    • 您的组件 jar 必须具有包含 META-INF 的 Export-Package 和 META-INF 的子包,其中有任何 JSF 相关文件(当然还有组件的标准包)。例如:Export-Package: META-INF,META-INF.resources...

    如果您使用 maven-bundle 插件,您必须使用撇号和等号来导出 META-INF 和子包。例如:

    <Export-Package>
      a.b.c,
      '=META-INF',
      '=META-INF.resources',
      ...
    </Export-Package>
    

    在 JSF Spec 2.2 中可能有关于 JSF-OSGI 关系的部分。要查看进度,请参阅http://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-942

    【讨论】:

      【解决方案2】:

      我不确定它是否能准确回答您的问题,但我发现这个关于Spring and osgi 的帖子很有趣,尤其是这个specific answer,其中依赖项和类路径捆绑在 MANIFEST.MF 中。

      该线程还导致了 tutorial about Spring Dynamic Modules (DM) for OSGi™ Service Platforms 的更新,这也可能引起人们的兴趣。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-24
        • 2023-03-26
        • 2014-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多