javax.faces.STATE_SAVING_方法可序列化

javax.faces.STATE_SAVING_方法可序列化,java,jsf,serializable,Java,Jsf,Serializable,我有一个JSF和Spring集成的应用程序。我的帐户支持Bean类是scope会话,它是可序列化的[如建议的那样。在我的web.xml javax.faces.STATE\u SAVING\u方法中,值是'server'。在这里一切正常 [我在层中有支持bean、服务类和DAO类。] 当我将javax.faces.STATE_SAVING_方法的值更改为“client”时,应用程序抛出指向我的服务类的异常“java.io.NotSerializableException”。如果我使服务类可序列化

我有一个JSF和Spring集成的应用程序。我的帐户支持Bean类是scope会话,它是可序列化的[如建议的那样。在我的web.xml javax.faces.STATE\u SAVING\u方法中,值是'server'。在这里一切正常

[我在层中有支持bean、服务类和DAO类。]

当我将javax.faces.STATE_SAVING_方法的值更改为“client”时,应用程序抛出指向我的服务类的异常“java.io.NotSerializableException”。如果我使服务类可序列化,则“java.io.NotSerializableException”指向我的DAO类。如果我使DAO类可序列化,应用程序将我工作没有问题

然而,我认为使服务类和DAO类可序列化不是一个好方法

寻求专家意见


提前感谢。

您应该在您的帐户支持bean中将您的服务标记为“暂时的”。这会阻止序列化

例如:

@RequestScoped
public class AccountBackingBean {

 @EJB
 private transient MyService myService;
 private String someValue;

}
另请参见:


糟糕的示例。默认情况下,EJB被注入为可序列化代理。OP显然没有使用EJB。而且,反序列化后如何恢复服务?任何访问服务的尝试都会出现NPE。