启用扩展序列化调试信息的Java标志

30

我目前在使用Tomcat的HTTP会话复制功能时遇到了困难,特别是对于复杂对象。

有些对象实现了Serializable接口,但是包含了一些非可序列化的成员变量。

不幸的是,默认情况下堆栈跟踪信息并没有提供太多有用的信息。

有一个标志-XX:????可以启用详细的类名,当NotSerializableException异常出现在堆栈跟踪中时,该标志将帮助我找到错误的源头。但我忘记了它的名称是什么。

这个标志的名称是什么?


1
你所说的“session”,是指Servlet中的HttpSession吗? - McDowell
HttpSession必须仅包含可序列化的对象,否则它将无法持久化重启,并且无法被复制到其他Tomcat节点。 - Andreas Petersson
1个回答

61

-Dsun.io.serialization.extendedDebugInfo=true


由于SO规则,我需要等待2天才能将其标记为已接受。我在http://mfondo.blogspot.com/2007/10/java-serialization-debugging.html找到了答案。 - Andreas Petersson
2
值得一提的是,只有在出现序列化问题时,该标志才会生效,因此日志不会在事件发生之前变得混乱。 - mrswadge
@AndreasPetersson 这个在哪里设置?比如我正在使用Tomcat服务器。 - eatSleepCode
@eatSleepCode 启动Tomcat的命令行。它是一个Java参数,因此需要放置到java命令中。 - mrswadge

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接