2008-10-15 44 views
2

有没有人一起使用OSGi和JSF?你可以在不同的OSGi包中有JSF自定义组件吗?

我问,因为JSF使用class-loader magic来查找自定义组件。从一个教程(重点煤矿):

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

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

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

回答

1

有可能以下列方式:

  • 你的网站的OSGi bundle必须有“要求,捆绑”在MANIFEST.MF指向包含的组件
  • 你的组件罐子必须捆绑具有包含META-INF的Export-Package和包含任何JSF相关文件(当然还有组件的标准包)的META-INF的子包。例如: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

相关问题