加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 07:37:45 所属栏目:Java 来源:网络整理
导读:我正在审查当前的JSF项目,其中web.xml配置包含: FacesServlet(在* .xhtml上配置) com.sun.faces.config.ConfigureListener 我正在使用JSF 2.2和Mojarra实现. 我对ConfigureListener感到困惑.配置中是否需要此类?这门课的目标是什么?我找不到任何信息,班级
我正在审查当前的JSF项目,其中web.xml配置包含:

> FacesServlet(在* .xhtml上配置)
> com.sun.faces.config.ConfigureListener

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

我对ConfigureListener感到困惑.配置中是否需要此类?这门课的目标是什么?我找不到任何信息,班级几乎没有javadoc.

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

解决方法

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

存在通过.tld文件的自动注册不足的情况.众所周知的是当webapp部署到Jetty时.这在Q& A:could not find Factory: javax.faces.context.FacesContextFactory中有详细解释.

此外,如前所述和详细的答案,GlassFish v3有一个错误,其中TLD文件扫描太晚,因此JSF无法在适当的时刻进行必要的初始化操作.然后,您需要在webapp的web.xml中显式注册ConfigureListener.

但是如果它没有在web.xml中明确注册时适合你,那么就把它保留下来. web.xml中的噪音更少.但是,如果您碰巧可能部署到对上述问题敏感的容器(因此当您的webapp实际上是一个公开分发的容器并且您无法控制目标容器的选择时),那么您最好将其保留在“那”.

更新:在web.xml中启用此条目时,似乎Tomcat 8.x显示错误行为:此侦听器实际上将执行两次而不是仅执行一次.结果是灾难性的:除其他外,所有JSF事件侦听器都将被注册两次,组件库将被加载两次.这仅导致运行时期间的冲突.换句话说,在部署到Tomcat时,请确保从web.xml中删除此条目.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读