Java 注入的EJB引用在ViewScope JSFbean中丢失
我已经看到了很多关于将EJB注入ViewScope JSF托管bean的讨论。这样做似乎是可以接受的做法 我正在尝试将应用程序中的一个bean从RequestScope更改为ViewScope,以添加一些额外的功能 我修改了EJB类,以确保所有内容都是可序列化的。当我的JSFBean被创建时,EJB最初是可访问的。但是,当用户操作在bean中激发一个试图调用EJB方法的方法时,会抛出一个NullPointerException 只要我将bean从ViewScope切换回RequestScope,一切都正常 这可能是正在使用的JSF实现中的错误吗?此应用程序使用MyFaces 2.1.12并在Websphere 7.0上运行Java 注入的EJB引用在ViewScope JSFbean中丢失,java,jsf,jakarta-ee,ejb,websphere,Java,Jsf,Jakarta Ee,Ejb,Websphere,我已经看到了很多关于将EJB注入ViewScope JSF托管bean的讨论。这样做似乎是可以接受的做法 我正在尝试将应用程序中的一个bean从RequestScope更改为ViewScope,以添加一些额外的功能 我修改了EJB类,以确保所有内容都是可序列化的。当我的JSFBean被创建时,EJB最初是可访问的。但是,当用户操作在bean中激发一个试图调用EJB方法的方法时,会抛出一个NullPointerException 只要我将bean从ViewScope切换回RequestScope,
谢谢。作为一个框架,CDI本身对视图一无所知。因此,注入
@ViewScoped
bean将不起作用
这是同时使用JSF和CDI的主要缺点之一。但你不是第一个遇到这个问题的人
如果您坚持使用JSF2.1实现,那么像或将以某种方式扩展您的CDI的框架,这样您也可以在@ViewScoped
bean中@Inject
如果您能够升级到JSF2.2(我建议您这样做),那么这个CDI扩展将是JSF实现的本机部分,您可以在无需进一步ado的情况下同时使用这两个扩展。请参阅。一些代码将非常有用:ejb和pagenoone:感谢您的回复。我现在明白了为什么这么多人使用CODI或Seam来处理这些问题。升级到JSF2.2目前还不是一个选项,所以我选择将bean requestscope保留在范围内,只将会话中需要的变量添加到单独的SessionScoped bean中。理想情况下,我更愿意将我的功能包含在一个范围适当的bean中,但有时您必须在保持约束的范围内工作。