Jsf 2 具有CDI注入属性的ViewScope ManagedBean上的NotSerializableException

Jsf 2 具有CDI注入属性的ViewScope ManagedBean上的NotSerializableException,jsf-2,java-ee-6,cdi,ejb-3.1,Jsf 2,Java Ee 6,Cdi,Ejb 3.1,我正在尝试创建一个可伸缩的JSF应用程序。 我想在客户端保存视图状态,但我对带有CDI注入属性的ViewScope ManagedBean有问题 SomeService.java: @Singleton public class SomeService { // ... } SomeBean.java @ManagedBean @ViewScoped public class SomeBean implements Serializable { @Inject

我正在尝试创建一个可伸缩的JSF应用程序。 我想在客户端保存视图状态,但我对带有CDI注入属性的ViewScope ManagedBean有问题

SomeService.java:

@Singleton
public class SomeService {
    // ...
}
SomeBean.java

@ManagedBean
@ViewScoped
public class SomeBean implements Serializable {

            @Inject
            private SomeService someService;
}
不幸的是,glassfish未能序列化
someService
,我不想序列化它,而是重新注入它

我试图使其暂时化,在反序列化后访问
someService
时,最终导致NullPointerException

我该怎么办

我知道我可以将CDI ViewScope与Seam Faces或CODI一起使用,但我希望最大限度地减少依赖性

我也可以等待JEE7,它将为CDI提供@ViewScope,但我们在几个月前不会使用JEE7

更新
我只是想补充一点,我使用的是捆绑在一个jar中的嵌入式EJB,这个jar本身就链接到我的war。 NotSerializableException的堆栈跟踪包含以下消息:
com.company.core.service.\uuuuejb31\uuuuuuuuuusomeservice\uuuuuuu Intf\uuuuuuuuuuuuuuuuuu Bean\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
我不喜欢自己回答自己的问题,但经过进一步研究后,我发现这是Mojarra 2.1.6中的一个bug(我使用的Glassfish 3.1.2.2.2


要更新Mojara,您只需要下载一个更新的版本(例如:)并将其作为javax.faces.jar放在$GLASSFISH/modules目录中。

为什么您要通过CDI的
@Inject
而不是EJB的
@EJB
来注入EJB?我并没有真正的区别,因为在某些情况下使用
@EJB
更好。我试图从
@Inject
更改为
@EJB
,但没有任何改进。你有什么建议吗?