我正在尝试创建一个可扩展的 JSF 应用程序。我想在客户端保存视图状态,但我在使用带有 CDI 注入属性的 ViewScoped 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 ViewScoped 与 Seam Faces 或 CODI 一起使用,但我想最大程度地减少依赖关系。
我也可以等待 JEE7,它将为 CDI 提供 @ViewScoped,但我们不会在几个月前使用 JEE7。
更新:
我只是想补充一点,我正在使用捆绑在一个 jar 中的嵌入式 EJB,该 jar 本身与我的战争相关联。NotSerializableException 的堆栈跟踪具有以下消息:
com.company.core.service.__EJB31_Generated__SomeService__Intf____Bean__