【发布时间】:2023-03-12 17:32:01
【问题描述】:
在 Tomcat (6.0.32) 中运行的 Spring 3.5、Webflow 2.2 应用程序有一个非常奇怪的问题
部分 webflow 调用以检索对象列表。此列表放置在 viewScope 对象中以供 JSP 视图使用。此列表中的每个对象都继承自包含一些公共字段的基类。
然后,webflow 转发到一个 JSP 视图,该视图通过写出所有对象来显示该列表的内容。
当我从独立的 Tomcat 运行它时,基类上的字段都以某种方式设置为 null。我已经调试并确认列表是从 webflow 调用的代码正确构建的。因此,在将列表放入 webflow 视图范围和稍后由 JSP 检索之间的某个位置,基类字段被重置为 null。
问题的真正奇怪的部分是,如果我从 Intellij IDEA 中启动并运行 Tomcat,应用程序会完美运行。我尝试了各种 JDK 和 Tomcat 版本,并且都有相同的问题。
这似乎是一个 webflow 问题(可能是不正确的序列化?),它对 Tomcat 是否从 IntelliJ 中启动很敏感。
IntelliJ 做了什么会导致 Java 序列化行为不端?
【问题讨论】:
-
另外 - 如果某个善良的灵魂可以指出 Spring Webflow 源代码中的类处理序列化/反序列化对象进出视图范围的处理,那将非常有用。谢谢。
-
这似乎是一个序列化错误。 Spring SerializedFlowExectionSnapshot 对象包含一个字节数组,其中包含 flowExecutionData - 视图/流范围内所有内容的序列化形式。当错误很明显时,此数组比错误未显示时小。部分数据丢失!
标签: java serialization tomcat intellij-idea spring-webflow