com.sun.faces.config.ConfigureListener 的配置

2024-02-06

我正在审查当前的 JSF 项目,其中web.xml配置包含:

  • FacesServlet(配置在*.xhtml)
  • the com.sun.faces.config.ConfigureListener

我正在使用 JSF 2.2 和 Mojarra 实现。

我很困惑ConfigureListener。配置中需要这个类吗?这堂课的目标是什么?我找不到任何信息,并且该类几乎没有javadoc。

如果我删除此配置,一切似乎都会以相同的方式工作。因此我猜测ConfigureListener可以或应该被删除,但我不确定。


The ConfigureListener通常通过自动注册/META-INF/jsf_core.tldMojarra 实现 JAR 文件的文件。此外,ConfigureListener通过 Servlet 3.0 显式注册ServletContainerInitializer为了解决旧的 GlassFish v3 错误(注意:v3,而不是 3.0.x,因此实际上是有史以来第一个 GF3 版本)。

存在这样的情况:通过以下方式自动注册.tld文件不足。众所周知的是,当 web 应用程序部署到Jetty http://www.eclipse.org/jetty/。此问答对此进行了详细解释:找不到工厂:javax.faces.context.FacesContextFactory https://stackoverflow.com/questions/7886035/could-not-find-factory-javax-faces-context-facescontextfactory.

另外,正如前面和详细答案中提到的,GlassFish v3 有一个错误,其中 TLD 文件扫描得太晚,因此 JSF 无法在正确的时刻执行必要的初始化操作。然后你需要显式注册ConfigureListener在网络应用程序中web.xml.

但如果它在没有明确注册的情况下对你有用web.xml,然后将其保留。噪音较小web.xml更好。但是,如果您碰巧可能部署到对上述问题敏感的容器(因此,当您的 web 应用程序实际上是一个公开分发的应用程序并且您无法控制目标容器的选择时),那么您最好将其保留在“for the case”中那”。


Update:当在以下位置启用此条目时,Tomcat 8.x 似乎会显示错误行为web.xml:这个监听器实际上会被执行两次,而不是只执行一次。后果是灾难性的:除其他外,所有 JSF 事件侦听器将被注册两次,组件库将被加载两次。这只会导致运行时发生冲突。换句话说,当部署到 Tomcat 时,请确保从web.xml.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

com.sun.faces.config.ConfigureListener 的配置 的相关文章