我在社交网站上工作,使用JSF 2.2我有一些bean,在这些bean中注入了视图范围。
有时在tomcat中我会遇到著名的NotSerializableException,我有一些问题:
1-使用空管理器禁用会话持久性的缺点如下:
<Context ... >
<Manager pathname="" />
</Context>
何时使用这种方法?
2-如果我要实现Serializable接口,我是否应该使视图作用域(请求和会话bean呢?)只实现Serializableinterface,从而将注入的服务标记为瞬态?
3-bean是唯一应该实现Serializable的层,而服务和dao不应该实现吗?以及为服务或dao实现Serializable的缺点是什么?
请告知。
1-使用空管理器禁用会话持久性的缺点如下:
<Context ... >
<Manager pathname="" />
</Context>
缺点是无法获得会话持久性。
何时使用这种方法?
当您不想要会话持久性时。
2-如果我要实现Serializable接口,我是否应该使视图作用域(请求和会话bean呢?)只实现Serializableinterface,从而将注入的服务标记为瞬态?
您需要使任何可以绑定到会话中的内容都是可序列化的,以及它的非静态非瞬态成员,等等,直到关闭为止。NotSerializableExceptions
会告诉你什么时候错过了什么。
3-bean是唯一应该实现Serializable的层吗?服务和dao不应该实现
正确。序列化服务没有意义,DAO也是如此,所以它们在成为成员时需要是瞬态的。
以及为服务或dao实现Serializable的缺点是什么?
请参见上文。对于服务来说,这基本上是不可能的;对于DAO,您有一个主要的生存性问题。DAO应为极度瞬态,以及transient.