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/>
,会出现错误。
我没有找到将 @ViewScoped
与 EJB
一起使用的解决方案。 @ViewScoped
似乎不支持 STATE_SAVING_METHOD
设置为 client
的 EJB。
要解决这个问题,我有两种选择:
- 不要使用
@ViewScoped
,而是选择 @RequestScoped
或 @SessionScoped
- 使用
STATE_SAVING_METHOD
和 server
参数
当我在 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/>
,会出现错误。
我没有找到将 @ViewScoped
与 EJB
一起使用的解决方案。 @ViewScoped
似乎不支持 STATE_SAVING_METHOD
设置为 client
的 EJB。
要解决这个问题,我有两种选择:
- 不要使用
@ViewScoped
,而是选择@RequestScoped
或@SessionScoped
- 使用
STATE_SAVING_METHOD
和server
参数