【问题标题】:Testing for serialization across weblogic clustered environment跨 weblogic 集群环境测试序列化
【发布时间】:2013-09-09 03:18:19
【问题描述】:

场景如下:

目前我们正致力于在非集群环境中运行应用程序。 但是现在我们需要一个能够部署在集群 weblogic 环境中的现有应用程序。

这是一个基于 JSF 的应用程序,包含许多托管 bean。 现在的问题是我们还没有设置任何集群环境,预计在 3 周后到达。

在一个weblogic集群中,相信我们一定会遇到这个问题

java.io.NotSerializableException: 

我的问题是,有没有办法找出我现有的哪些类在集群环境中会失败,而无需将其部署在集群环境中。

我不确定是否有办法测试一个类的所有成员变量是否都是可序列化的,这样它就不会在集群环境中失败。

【问题讨论】:

    标签: java jsf serialization weblogic


    【解决方案1】:

    使用 Mojarra 时,您可以使用以下上下文参数告诉它始终序列化 JSF 状态:

    <context-param>
        <param-name>com.sun.faces.serializeServerState</param-name>
        <param-value>true</param-value>
    </context-param>
    

    (MyFaces 等价于 org.apache.myfaces.SERIALIZE_STATE_IN_SESSION,但这已经默认为 true

    在测试期间,您将在未标记为 Serializable 的实例上获得 NotSerializableException。通常,需要可序列化的是视图和会话范围的 bean 及其所有属性。

    请注意,标记属性transient 不是正确的解决方案,在反序列化(恢复视图后)后它将保持null,这是错误的。然而,在某些情况下,没有其他方法(例如 3rd 方 API),在这种情况下,您最好考虑以下解决方案之一:

    对于业务服务,只要您使用 EJB 或 CDI,就无需将业务类标记为可序列化。无论如何,它们都被注入为可序列化的代理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-18
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      • 2015-03-28
      • 1970-01-01
      • 2012-09-12
      • 2013-02-01
      相关资源
      最近更新 更多