一个JAXB对象不实现Serializable接口的后果是什么?

5
我希望有人能够为我澄清一下,这样我就能更好地理解JAXB对象的编组是如何工作的。
从阅读和查看示例中我了解到,JAXB对象必须实现java.io.Serializable接口,以便正确地编组和解组该对象。我有点不确定的部分是当你的JAXB对象没有实现Serializable接口时会发生什么(即:会产生什么后果)? 这种情况在过去曾经发生过,导致日志文件中出现类似于以下错误信息:
ERROR [example.package.name.MyJaxbClass.data]DiskStorageFactory.call{503} | Disk Write of -309037891 failed: 
java.io.NotSerializableException: example.package.name.myJaxbClass$MyNonSerializedElement

然而余下的代码似乎运行正常。你的JAXB类实现序列化有多么重要,如果它们没有实现会发生什么?


为什么这被标记为 [tag:spring]?我在这个问题中没有看到任何与Spring相关的内容。 - Joachim Sauer
1个回答

7

一个JAXB (JSR-222)对象不需要实现java.io.Serializable就可以被转换为/从XML。对象与XML的转换并不是Java序列化的一部分。当然,如果您希望将对象序列化以供应用程序的其他部分使用,则需要正确地配置它们。


1
我认为这有助于澄清问题。序列化实际上并不需要用于编组JAXB对象,而是用于在检索对象后需要进行任何序列化的情况下。例如,将其存储在会话cookie中。听起来对吗?感谢您的帮助。 - ae14

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