我在社交网站上工作,我正在使用 JSF 2.2 >>在这些bean中注入了视图范围的bean。
我有时在tomcat中得到着名的 NotSerializableException ,我有一些问题:
1-使用空管理器禁用会话持久性有哪些缺点,如下所示:
<Context ... >
<Manager pathname="" />
</Context>
何时使用这种方法?
2-如果我要实现Serializable接口,我应该创建视图范围(请求和会话bean怎么样?)只实现Serializable接口,因此将注入的服务标记为瞬态?
3-是bean应该实现Serializable的唯一层,服务和daos不应该?为服务或daos实现Serializable有什么缺点?
请告知。
答案 0 :(得分:2)
1-使用空管理器禁用会话持久性有哪些缺点,如下所示:
<Context ... >
<Manager pathname="" />
</Context>
缺点是你没有得到会话持久性。
何时使用这种方法?
当您不想要会话持久性时。
2-如果我要实现Serializable接口,我应该创建视图范围(请求和会话bean怎么样?)只实现Serializable接口,因此将注入的服务标记为瞬态?
你需要制作任何可以绑定到Session可序列化的东西,以及它的非静态非瞬态成员,等等,直到关闭为止。 NotSerializableExceptions
会告诉你什么时候错过了什么。
3-是bean应该实现Serializable的唯一层,而服务和daos不应该
正确。序列化服务没有意义,DAO也是如此,因此在成员时它们需要是瞬态的。
?为服务或daos实现Serializable有什么缺点?
见上文。对于服务,它基本上是不可能的;对于DAO,你有一个重要的生活问题。 DAO应该极瞬态以及transient.