Cannot reply or makefault when client sends malformed XML - 
org.apache.axiom.om.OMException: com.ctc.wstx.exc.WstxParsingException
----------------------------------------------------------------------------------------------------------------------------------

                 Key: SYNAPSE-849
                 URL: https://issues.apache.org/jira/browse/SYNAPSE-849
             Project: Synapse
          Issue Type: Bug
          Components: Script mediator
    Affects Versions: 2.0
         Environment: Mac OS X 10.7.3 
Linux version 2.6.18-238.19.1.el5
(issue not specific to OS/HW - getting on Mac, Linux, Windows)
            Reporter: Isobel Novak
             Fix For: 2.0


When client sends malformed XML to Synapse service, getting 
"org.apache.axiom.om.OMException: com.ctc.wstx.exc.WstxParsingException 
exception" when accessing the payload to parse it/transform it, etc.
  
After this exception is raised, you cannot mediate the message further, or use 
makefault to return response to the client.

Attempting to makefault after hitting this error only returns the same error 
'org.apache.axiom.om.OMException: com.ctc.wstx.exc.WstxParsingException'.  
Cannot makefault.

We want to be able to return a fault response to the client when they send 
malformed xml.  How to do this?  

Right now, when this exception is raised, we can only log a custom text message 
and drop the message, but cannot return a fault response.  
Dropping the message returns 'HTTP 202 Accepted' response, which isn't really 
the right response in this case.  We'd like to return fault response or at 
least HTTP 400 'Bad request'.


Error details:
org.apache.axiom.om.OMException: com.ctc.wstx.exc.WstxEOFException: Unexpected 
EOF; was expecting a close tag for element <tns:VerifyCouponRequest>
 at [row,col {unknown-source}]: [970,19]
        at 
org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:293)
        at 
org.apache.axiom.om.impl.llom.OMSerializableImpl.build(OMSerializableImpl.java:78)
        at 
org.apache.axiom.om.impl.llom.OMElementImpl.build(OMElementImpl.java:745)
        at 
org.apache.axiom.om.impl.llom.OMElementImpl.detach(OMElementImpl.java:723)
        at 
org.apache.synapse.mediators.transform.FaultMediator.makePOXFault(FaultMediator.java:201)
        at 
org.apache.synapse.mediators.transform.FaultMediator.mediate(FaultMediator.java:109)
        at 
org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:60)
        at 
org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:113)
        at 
org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:168)
        at 
org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:60)
        at 
org.apache.synapse.config.xml.AnonymousListMediator.mediate(AnonymousListMediator.java:30)
        at 
org.apache.synapse.mediators.filters.FilterMediator.mediate(FilterMediator.java:143)
        at 
org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:60)
        at 
org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:113)
        at 
org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(ProxyServiceMessageReceiver.java:142)
        at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:173)
        at 
org.apache.axis2.transport.http.util.RESTUtil.invokeAxisEngine(RESTUtil.java:135)
        at 
org.apache.axis2.transport.http.util.RESTUtil.processXMLRequest(RESTUtil.java:84)
        at 
org.apache.synapse.transport.nhttp.util.RESTUtil.processPOSTRequest(RESTUtil.java:184)
        at 
org.apache.synapse.transport.nhttp.ServerWorker.processEntityEnclosingMethod(ServerWorker.java:403)
        at 
org.apache.synapse.transport.nhttp.ServerWorker.run(ServerWorker.java:259)
        at 
org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:58)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:680)
Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF; was expecting a 
close tag for element <tns:VerifyCouponRequest>
 at [row,col {unknown-source}]: [970,19]
        at 
com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:661)
        at 
com.ctc.wstx.sr.BasicStreamReader.nextFromTree(BasicStreamReader.java:2730)
        at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1019)
        at 
org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.next(XMLStreamReaderWrapper.java:225)
        at 
org.apache.axiom.util.stax.dialect.DisallowDoctypeDeclStreamReaderWrapper.next(DisallowDoctypeDeclStreamReaderWrapper.java:34)
        at 
org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.next(XMLStreamReaderWrapper.java:225)
        at 
org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuilder.java:672)
        at 
org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:214)
        at 
org.apache.axiom.om.impl.llom.OMElementImpl.buildNext(OMElementImpl.java:676)
        at 
org.apache.axiom.om.impl.llom.OMNodeImpl.getNextOMSibling(OMNodeImpl.java:122)
        at 
org.apache.axiom.om.impl.llom.OMElementImpl.getNextOMSibling(OMElementImpl.java:344)
        at 
org.apache.axiom.om.impl.traverse.OMChildrenIterator.next(OMChildrenIterator.java:102)
        at 
org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:952)
        at 
org.apache.axiom.om.impl.llom.OMSerializableImpl.serialize(OMSerializableImpl.java:125)
        at 
org.apache.axiom.om.impl.llom.OMSerializableImpl.serialize(OMSerializableImpl.java:113)
        at 
org.apache.axiom.om.impl.llom.OMElementImpl.toString(OMElementImpl.java:1088)
        at 
org.apache.bsf.xml.DefaultXMLHelper.toScriptXML(DefaultXMLHelper.java:50)
        at 
org.apache.synapse.mediators.bsf.ScriptMessageContext.getPayloadXML(ScriptMessageContext.java:77)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at 
org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
        at 
groovy.lang.MetaClassImpl$GetBeanMethodMetaProperty.getProperty(MetaClassImpl.java:3463)
        at 
org.codehaus.groovy.runtime.callsite.GetEffectivePojoPropertySite.getProperty(GetEffectivePojoPropertySite.java:61)
        at 
org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGetProperty(AbstractCallSite.java:227)
        at Script1.inMediator(Script1.groovy:61)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at 
org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1053)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:920)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:883)
        at groovy.lang.Closure.call(Closure.java:410)
        at 
com.sun.script.groovy.GroovyScriptEngine.callGlobal(GroovyScriptEngine.java:294)
        at 
com.sun.script.groovy.GroovyScriptEngine.callGlobal(GroovyScriptEngine.java:288)
        at 
com.sun.script.groovy.GroovyScriptEngine.invokeImpl(GroovyScriptEngine.java:277)
        at 
com.sun.script.groovy.GroovyScriptEngine.invokeFunction(GroovyScriptEngine.java:128)
        at 
org.apache.synapse.mediators.bsf.ScriptMediator.mediateWithExternalScript(ScriptMediator.java:233)
        at 
org.apache.synapse.mediators.bsf.ScriptMediator.invokeScript(ScriptMediator.java:199)
        at 
org.apache.synapse.mediators.bsf.ScriptMediator.mediate(ScriptMediator.java:174)
        at 
org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:60)
        at 
org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:113)
        at 
org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:168)
        ... 13 more

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to