2

有人一起使用过 OSGi 和 JSF 吗?

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

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

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

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

4

2 回答 2

1

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

该线程还导致了本教程的更新,该教程关于 OSGi™ 服务平台的 Spring 动态模块 (DM)也可能感兴趣。

于 2008-10-15T03:58:02.290 回答
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

于 2011-10-18T21:03:30.693 回答