gpt4 book ai didi

java - 跨 weblogic 集群环境的序列化测试

转载 作者:行者123 更新时间:2023-12-01 04:23:45 26 4
gpt4 key购买 nike

这是场景:

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

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

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

java.io.NotSerializableException: 

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

我不确定是否有一种方法可以测试类的所有成员变量是否可序列化,以便在集群环境中不会失败。

最佳答案

使用 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)

在测试期间,您将在未标记为 Serialized 的实例上收到 NotSerializedException。通常, View 和 session 作用域的 bean 及其所有属性都需要可序列化。

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

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

关于java - 跨 weblogic 集群环境的序列化测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18691033/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com