【问题标题】:confused how to handle NotSerializableException困惑如何处理 NotSerializableException
【发布时间】:2014-01-05 23:33:01
【问题描述】:

我正在开发社交网站,我正在使用 JSF 2.2 我有一些带有 view scopes 的 bean,这些 bean 服务被注入。

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

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

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

以及何时使用这种方法?

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

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

请指教。

【问题讨论】:

    标签: jsf jakarta-ee tomcat deployment notserializableexception


    【解决方案1】:

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

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

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

    以及何时使用这种方法?

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

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

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

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

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

    ?以及为服务或 daos 实现 Serializable 的缺点是什么?

    见上文。对于服务来说,这基本上是不可能的;对于 DAO,你有一个主要的活性问题。 DAO 应该是非常瞬态的以及transient.

    【讨论】:

    • 我应该序列化会话 bean 并只查看 bean 吗?而不是序列化请求 bean 和应用程序 bean?
    猜你喜欢
    • 2021-10-22
    • 2018-11-24
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    相关资源
    最近更新 更多