你可以在不同的OSGi包中使用JSF自定义组件吗?

有没有人一起使用OSGi和JSF?

我问,因为JSF使用类加载器魔法来查找自定义组件。 从教程(重点介绍):

该配置文件最终将成为表示此组件的.jar文件中的META-INF / faces-config.xml。 JSF将在运行时 (在.war文件的WEB-INF / lib目录中) 加载的每个.jar文件中查找这样的文件名 ,并在其配置中使用它们中的每一个。 通过这种方式,可以将多个组件.jar文件组合到一个Web应用程序中,并且每个.jar中描述的所有组件都可供应用程序使用。

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

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


可以通过以下方式进行:

  • 您的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规范2.2中,可能有关于JSF-OSGI关系的部分。 要查看进度,请参阅http://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-942


    我不确定它确实回答了你的问题,但是我发现这个关于Spring和osgi interresting的线程,特别是这个特定的答案,其中依赖和classpath绑定在MANIFEST.MF中。

    该线程还导致了这个教程的更新,这些教程也可能对您感兴趣的OSGi™服务平台的Spring动态模块(DM)有帮助。

    链接地址: http://www.djcxy.com/p/12955.html

    上一篇: Can you have JSF custom components in different OSGi bundles?

    下一篇: Android: How to make Linkify links not long