我目前正面临一个奇怪的问题,这个问题并不经常发生。我的应用程序使用带有JAXB和Java (XMLStreamReader)的数百万行的XMLStreamReader来解除XML文件的编组,如果更改了XML,则在启动时将这些对象导入数据库。到目前为止,这是正确的工作,除了在一些设备(约5%以上的1000多个设备)。在这些设备上我得到了一个javax.xml.stream.XMLStreamException。有时,重新启动会有所帮助,并且可以成功地处理XML。XML本身在所有设备上都具有相同的内容,因此XML和XSD都是有效的。
例外情况也并非总是发生在同一地点。例如:
由: javax.xml.stream.XMLStreamException: ParseError at row,col2650616,17 Message: Element type "XX“引起,后面必须跟着属性规范">”或"/>“。
稍后:
col3272359,14
[javax.xml.stream.XMLStreamException: ParseError at row,javax.xml.stream.XMLStreamException Message: Element type "XY“必须后面跟着属性规范">”或“/>”。
整个应用程序运行在一个微服务体系结构中,但不依赖于其他服务。在启动时,会发生很多事情,因为每个微服务都初始化自己的状态。对我来说,似乎存在一些内存问题,因为它是不可复制的,并且设备上的微服务在它们的版本上没有什么不同。
在优化解编组过程之前,我希望能够首先重现这个问题,以确保任何改进都是有效的。当我试图减少Xmx和Xmx时,我可能会得到OutOfMemoryException,但永远不会得到XMLStreamException。
现在我在问自己,
当和为什么会发生behaviour?
XMLStreamException,以及如何复制这个XMLStreamException--这种情况可能不会经常发生,因为所有的设备都应该是相同的?
吗?
谢谢你提前提供帮助。
发布于 2020-07-27 13:11:57
你的问题中没有足够的信息可以给出明确的答案,但我们可以帮助你解决这个问题。
。
在这里,
<=‘’/>
注意,属性值中有一个未转义的'。当代码从源中提取数据、无法转义数据并将其写入属性值时,这种情况很容易发生。这种变化将产生于数据的可变性。例如,大多数名称中没有',但O'Toole有.
记录作为调试问题的下一步失败的确切XML,如@vanje在注释中的mentioned。
另请参阅
https://stackoverflow.com/questions/63114061
复制相似问题