当前位置: 首页 > 知识库问答 >
问题:

Jetty Maven插件(Jetty:run goal)+Weld CDI+JSF 2.2=NPE在视域bean上

微生德运
2023-03-14

Mojarra JSF 2.2.10

应用程序的web.xml包含以下监听器:

org.jboss.weld.environment.servlet.BeanManagerResourceBindingListener
com.sun.faces.config.ConfigureListener

第一个侦听器向JNDI注册BeanManager。第二个侦听器初始化JSF并在JNDI中查找BeanManager。

更新:

NPE发生在会话失效时;由于JSF中没有注册BeanManager,因此无法销毁视域bean。请参见下面的堆栈跟踪:

由:java.lang.nullpointerException在com.sun.faces.application.view.viewscopeContextManager.destroyBeans(viewscopeContextManager.java:171)在com.sun.faces.application.view.viewscopeContextManager.sessionDestrocled(viewscopeContextManager.java:339)在com.sun.faces.application.view.viewscopeManager.sessionDestrocled(java:399)在org.eclipse.jetty.server.session.abstractSessionManager.removesession(abstractSessionManager.java:772)在org.eclipse.jetty.server.session.abstractSession.invalidate(abstractSession.java:326)在com.sun.faces.context.externalContexTimpl.invalidatession(externalContexTimpl.java:783)

共有1个答案

吴西岭
2023-03-14

Dimitri在jetty项目上提出了一个bug:https://bugs.eclipse.org/bugs/show_bug.cgi?id=462179

该bug包含问题原因的完整描述。简而言之,Weld使BeanManager对JSF可用的方式不适用于未组装的webapps(mvn jetty:run就是这种情况),只适用于war文件(即mvn jetty:run-war)。

 类似资料:
  • 我要求在JSF2.2页面上输入2个输入值。我们正在使用Primefaces控件。然后通过h:command按钮将这些值提交给托管bean方法。 然后,基于这些值,我想将同一JSF页面上的一个单独的输出字段设置为一个特定的值。 因此,我目前的问题是尝试连接一个托管bean,以便它将一个值返回到我的JSF页面上的字段,在本例中,字段名是mgrs。主要的问题是,我要处理的是生成返回值的第三方库,我不确定

  • 这是因为google不支持servlet API3.0。我真的现在找不到解决办法。运行PrimeFaces3.5不是一个选项,因为该项目使用JSF2.2,而2.2与PrimeFaces3.5不兼容。 这个主题的一个有用的评论:如何使用PrimeFaces p:FileUpload?从未调用侦听器方法或UploadedFile为空 更新:自从PrimeFaces4.x之后,当与JSF2.2和Serv

  • 视图目录 插件目录下view目录 模板常量 __ROOT__: 网站根目录,不带/; __PLUGIN_ROOT__: 插件根目录,不带/; __PLUGIN_TMPL__: 插件模板根目录,也就是插件目录下view目录,不带/; __ADMIN_TMPL__: 后台模板根目录,用于加载后台模板的相关 css,js 等资源文件,不带/; __STATIC__: public/static目录,不带

  • 主要内容:singleton,prototype默认情况下,所有的 Spring Bean 都是单例的,也就是说在整个 Spring 应用中, Bean 的实例只有一个。 我们可以在 <bean> 元素中添加 scope 属性来配置 Spring Bean 的作用范围。例如,如果每次获取 Bean 时,都需要一个新的 Bean 实例,那么应该将 Bean 的 scope 属性定义为 prototype,如果 Spring 需要每次都返回一个相同

  • 该方法的返回值导致导航规则“导航”到page2.xhtml。因此,我的理解是,一旦导航将请求流带到page2.xhtml,Page1.xhtml使用的名为“Player”的bean就超出了范围。毕竟,每个视图都使用一个名为“Player”的视图作用域bean。我需要传达一个名为id的参数。所以page1.xhtml有一个元素作为commandButton的子元素,用于“提交”page1。 page

  • 本文向大家介绍原生JS封装Ajax插件(同域、jsonp跨域),包括了原生JS封装Ajax插件(同域、jsonp跨域)的使用技巧和注意事项,需要的朋友参考一下 抛出一个问题,其实所谓的熟悉原生JS,怎样的程度才是熟悉呢? 最近都在做原生JS熟悉的练习。。。 用原生Js封装了一个Ajax插件,引入一般的项目,传传数据,感觉还是可行的。。。简单说说思路,如有不正确的地方,还望指正^_^ 一、Ajax核