混淆了如何处理NotSerializableException

时间:2013-12-17 23:57:03

标签: jsf java-ee tomcat deployment notserializableexception

我在社交网站上工作,我正在使用 JSF 2.2 >在这些bean中注入了视图范围的bean。

我有时在tomcat中得到着名的 NotSerializableException ,我有一些问题:

1-使用空管理器禁用会话持久性有哪些缺点,如下所示:

<Context ... >
    <Manager pathname="" />
</Context>

何时使用这种方法?

2-如果我要实现Serializable接口,我应该创建视图范围(请求和会话bean怎么样?)只实现Serializable接口,因此将注入的服务标记为瞬态?

3-是bean应该实现Serializable的唯一层,服务和daos不应该?为服务或daos实现Serializable有什么缺点?

请告知。

1 个答案:

答案 0 :(得分:2)

  

1-使用空管理器禁用会话持久性有哪些缺点,如下所示:

<Context ... >
    <Manager pathname="" />
</Context>

缺点是你没有得到会话持久性。

  

何时使用这种方法?

当您不想要会话持久性时。

  

2-如果我要实现Serializable接口,我应该创建视图范围(请求和会话bean怎么样?)只实现Serializable接口,因此将注入的服务标记为瞬态?

你需要制作任何可以绑定到Session可序列化的东西,以及它的非静态非瞬态成员,等等,直到关闭为止。 NotSerializableExceptions会告诉你什么时候错过了什么。

  

3-是bean应该实现Serializable的唯一层,而服务和daos不应该

正确。序列化服务没有意义,DAO也是如此,因此在成员时它们需要是瞬态的。

  

?为服务或daos实现Serializable有什么缺点?

见上文。对于服务,它基本上是不可能的;对于DAO,你有一个重要的生活问题。 DAO应该瞬态以及transient.