加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – SAXParseException XML-20221文本中的char无效

发布时间:2020-12-14 19:19:49 所属栏目:Java 来源:网络整理
导读:对于独立的Java应用程序,我们看到非常罕见的错误,其中包含有效XML内容的字符串导致JAXB抛出异常,例如: javax.xml.bind.UnmarshalException - with linked exception:[org.xml.sax.SAXParseException: 这是一个非常古老的Java应用程序,它是为旧版本的Java编

对于独立的Java应用程序,我们看到非常罕见的错误,其中包含有效XML内容的字符串导致JAXB抛出异常,例如:

javax.xml.bind.UnmarshalException
 - with linked exception:
[org.xml.sax.SAXParseException: 
    

这是一个非常古老的Java应用程序,它是为旧版本的Java编写的,我们有一个现有的依赖项:


错误代码始终是XML-20221,但原因可能有所不同,例如:

XML-20221: (Fatal Error) Invalid char in text.

XML-20100: (Fatal Error) Expected '?>'.]

XML-20121: (Fatal Error) End tag does not match start tag 'TotalDepositReqd'.

堆栈跟踪的其余部分也会有所不同,但通常看起来像:

at oracle.xml.parser.v2.XMLError.flushErrorHandler(XMLError.java:415)
at oracle.xml.parser.v2.XMLError.flushErrors1(XMLError.java:284)
at oracle.xml.parser.v2.NonValidatingParser.parseEndTag(NonValidatingParser.java:1359)
at oracle.xml.parser.v2.NonValidatingParser.parseElement(NonValidatingParser.java:1304)
at oracle.xml.parser.v2.NonValidatingParser.parseRootElement(NonValidatingParser.java:326)
at oracle.xml.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:293)
at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:209)
at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:211)

我们的Java版本是:

java version "1.6.0_16"
Java(TM) SE Runtime Environment (build 1.6.0_16-b01)
Java HotSpot(TM) Server VM (build 14.2-b01,mixed mode)

我们当前的命令行是:

java
-server
-Xmx2048m
-Xms2048m
-XX:MaxPermSize=128m
-XX:+UseConcMarkSweepGC
-Dsun.rmi.dgc.server.gcInterval=0x2932E00
-Dsun.rmi.dgc.client.gcInterval=3600000
-verbosegc
-Xloggc:/path/to/file
-gc.log
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-Djavax.xml.transform.TransformerFactory=org.apache.xalan.processor.TransformerFactoryImpl
-Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
-Djava.endorsed.dirs=/path/to/endorsed
-Duser.country=GB
-Duser.language=en
-Dhttp.keepAlive=false foo.ListenerServer

通常情况下,我们会在几秒钟的小突发中看到这些,这表明某些内部缓冲区已经损坏了? JVM的使用时间越长,这些异常就越常见. JVM的反弹可以解决这个问题好几天.

>还有其他人看过类似的东西吗?
>如果是这样,你有没有设法解决这个问题?
>也许我们应该转向不同的JAXB / JAXP实现?

最佳答案
当开发人员缓存Unmarshaller实例并在不同线程之间共享它时,我已经看到类似的问题(在解组期间偶尔出现异常).根据文档,Unmarshaller不是线程安全的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读