java.io.NotSerializableException: weblogic.ejb.container.internal.StatelessLocalObject 当 STATE_SAVING_METHOD 设置为客户端时

java.io.NotSerializableException: weblogic.ejb.container.internal.StatelessLocalObject when STATE_SAVING_METHOD is set to client

当我在 ManagedBean 中使用 @EJB 在 Weblogic 12c (12.1.1.0) 上将 STATE_SAVING_METHOD 设置为 client 时,出现以下异常:

<Error> <javax.enterprise.resource.webcontainer.jsf.application> <BEA-000000> <Error Rendering View[/test.xhtml]
java.io.NotSerializableException: weblogic.ejb.container.internal.StatelessLocalObject
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1164)
...

在 ManagedBean:

@ManagedBean()
@ViewScoped
public class TestMB implements Serializable {

private static final long serialVersionUID = 4760453378399618429L;

@EJB
private TestFacade testFacade;

更新:

在XHTML中,使用<h:form/>,会出现错误。

我没有找到将 @ViewScopedEJB 一起使用的解决方案。 @ViewScoped 似乎不支持 STATE_SAVING_METHOD 设置为 client 的 EJB。

要解决这个问题,我有两种选择:

  1. 不要使用 @ViewScoped,而是选择 @RequestScoped@SessionScoped
  2. 使用 STATE_SAVING_METHODserver 参数