Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 注入的EJB引用在ViewScope JSFbean中丢失_Java_Jsf_Jakarta Ee_Ejb_Websphere - Fatal编程技术网

Java 注入的EJB引用在ViewScope JSFbean中丢失

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,

我已经看到了很多关于将EJB注入ViewScope JSF托管bean的讨论。这样做似乎是可以接受的做法

我正在尝试将应用程序中的一个bean从RequestScope更改为ViewScope,以添加一些额外的功能

我修改了EJB类,以确保所有内容都是可序列化的。当我的JSFBean被创建时,EJB最初是可访问的。但是,当用户操作在bean中激发一个试图调用EJB方法的方法时,会抛出一个NullPointerException

只要我将bean从ViewScope切换回RequestScope,一切都正常

这可能是正在使用的JSF实现中的错误吗?此应用程序使用MyFaces 2.1.12并在Websphere 7.0上运行


谢谢。

作为一个框架,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中,但有时您必须在保持约束的范围内工作。