0

我在社交网站上工作,我正在使用JSF 2.2 ,并且我有一些 bean在这些 bean 服务中注入了视图范围。

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

1-使用空管理器禁用会话持久性的缺点如下:

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

什么时候使用这种方法?

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

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

请指教。

4

1 回答 1

2

1-使用空管理器禁用会话持久性的缺点如下:

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

缺点是您没有获得会话持久性。

什么时候使用这种方法?

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

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

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

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

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

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

看上面。对于服务来说,这基本上是不可能的;对于 DAO,你有一个主要的活性问题。DAO 应该是非常短暂的,并且transient.

于 2013-12-18T00:20:25.127 回答