这是在生产现场向我报告的。我们有一个消息数据库表,里面的对象使用标准的Java XMLEncoder存储为XML。当我们处理消息时,我们从数据库中的字段解码对象。
有时客户端会记录此错误。
ERROR Dec 15 17:19:49 services.ScheduleRunner - 0 occurred processing
message 4183439 java.lang.ArrayIndexOutOfBoundsException: 0
at com.sun.beans.ObjectHandler.dequeueResult(Unknown Source)
at java.beans.XMLDecoder.readObject(Unknown Source)
at com.hl7.services.ScheduleRunner.run(ScheduleRunner.java:116)
at java.util.TimerThread.mainLoop(Unknown Source)
at java.util.TimerThread.run(Unknown Source)
他们给我发了XML,我自己尝试了,它对我有用。知道为什么会失败吗?他们目前运行Java 6_22,我有Java 6_26。
它显示“未知来源”也很奇怪。是不是使用运行时部署了Java源代码?另一个奇怪的事情是我的源文件在第116行没有任何内容。
TIA
答案 0 :(得分:2)
可能是特殊字符的原因。
< <
> >
& &
' '
" "
答案 1 :(得分:1)
使用encoder = new XMLDecoder( org.apache.commons.io.IOUtils.toInputStream(stringfromdatabase));
从数据库创建InputStream
。