Hi,
I'm seeing a problem with using the Factory parse() method corrupting
after it sees malformed XML. For example, I have a web service that
receives XML over an HTTP POST, and uses Xmlbeans to parse the XML. I
use the parse() method that takes a String.
When I send an intentionally invalid XML string to the service, it
produces Error #1 below. The XML I send is:
<?xml verion="1.0" ?>
<request clientId="1234" clientKey="5678">
<message>Test message</message>
</request>
Notice that the XML declaration has "verion" instead of "version"
(missing the "s"). When I correct the XML and send the following, the
parse() method succeeds half the time and fails (with Error #2 below)
half the time. The successes and failures exactly alternate.
<?xml version="1.0" ?>
<request clientId="1234" clientKey="5678">
<message>Test message</message>
</request>
Has anyone seen a similar behavior? Is there any way to tell the
document factory to dispose of it's digesters and create new ones if
there is an error while parsing?
Thanks,
Garth
Error #1:
2007-03-15 15:50:48,621 [http-9602-Processor23] ERROR
com.someone.gateway.servlet.request.Request - Error parsing xml input
stream!
org.apache.xmlbeans.XmlException: XML Declaration not well-formed
at
org.apache.xmlbeans.impl.newstore2.Locale$SaxLoader.load(Locale.java:2770)
at org.apache.xmlbeans.impl.newstore2.Locale.parse(Locale.java:626)
at
org.apache.xmlbeans.impl.newstore2.Locale.parseToXmlObject(Locale.java:611)
at
org.apache.xmlbeans.impl.newstore2.Locale.parseToXmlObject(Locale.java:605)
at
org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaTypeLoaderBase.java:200)
at
net.someone.gateway.RequestDocument$Factory.parse(RequestDocument.java:51)
at com.someone.gateway.servlet.request.Request.parse(Request.java:52)
at com.someone.gateway.servlet.Gateway.doPost(Gateway.java:64)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
Caused by: org.apache.xmlbeans.impl.piccolo.io.FileFormatException:
XML Declaration not well-formed
at
org.apache.xmlbeans.impl.piccolo.xml.XMLDeclParser.parse(XMLDeclParser.java:905)
at
org.apache.xmlbeans.impl.piccolo.xml.XMLInputReader.parseXMLDeclaration(XMLInputReader.java:56)
at
org.apache.xmlbeans.impl.piccolo.xml.XMLReaderReader.processXMLDecl(XMLReaderReader.java:260)
at
org.apache.xmlbeans.impl.piccolo.xml.XMLReaderReader.reset(XMLReaderReader.java:85)
at
org.apache.xmlbeans.impl.piccolo.xml.DocumentEntity.open(DocumentEntity.java:75)
at
org.apache.xmlbeans.impl.piccolo.xml.PiccoloLexer.reset(PiccoloLexer.java:971)
at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.parse(Piccolo.java:697)
at
org.apache.xmlbeans.impl.newstore2.Locale$SaxLoader.load(Locale.java:2756)
... 23 more
Error #2:
2007-03-15 15:51:41,512 [http-9602-Processor23] ERROR
com.someone.gateway.servlet.request.Request - Error parsing xml input
stream!
java.lang.NullPointerException
at
org.apache.xmlbeans.impl.piccolo.xml.DocumentEntity.close(DocumentEntity.java:154)
at
org.apache.xmlbeans.impl.piccolo.xml.DocumentEntity.reset(DocumentEntity.java:134)
at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.parse(Piccolo.java:696)
at
org.apache.xmlbeans.impl.newstore2.Locale$SaxLoader.load(Locale.java:2756)
at org.apache.xmlbeans.impl.newstore2.Locale.parse(Locale.java:626)
at
org.apache.xmlbeans.impl.newstore2.Locale.parseToXmlObject(Locale.java:611)
at
org.apache.xmlbeans.impl.newstore2.Locale.parseToXmlObject(Locale.java:605)
at
org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaTypeLoaderBase.java:200)
at
net.someone.gateway.RequestDocument$Factory.parse(RequestDocument.java:51)
at com.someone.gateway.servlet.request.Request.parse(Request.java:52)
at com.someone.gateway.servlet.Gateway.doPost(Gateway.java:64)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]