在 Geronimo 的所有历史版本中, 对 MyFaces 整合的内容比较少, 只是检查了以下是否有 FacesServlet 在 web.xml 文件中, 如果有则将 MyFaces 的 StartUpListener 添加到 web.xml 中.
在 JSF 2.0 中, 添加了以下几个特性, 促使需要对整合的代码做些许修改
a. ManagedBean annotation, 不得不说, 这个标识有些鸡肋, 事实上 JSF 规范也并不要求对其提供支持. 尤其是 JavaEE 6 中, 有了 WebBeans 之后. 后在在社区里面提了以下, 似乎也没什么人关心.
b. 多个 faces-config 文件的排序功能
由于以上两个功能, 使得在部署市需要做一些工作, 一是必须扫描出所有的使用 ManagedBean annotation 的 Java 类, 并为其构建本地 JNDI 目录, 否则那些 @EJB 什么的标签根本没法工作. 其次是速度问题, 默认情况下, MyFaces 会在启动时执行以上的两个功能, 对应用程序的影响比较大.
当前的解决方法时, 参照在 Web 容器的处理方式, 使用一些可序列化的 Info 类, 将所有信息在部署时都生成好, 启动时直接反序列化, 再通过 MyFaces 的一些 SPI 传递过去, 避免每次启动时重复那些工作.