You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@synapse.apache.org by "Hiranya Jayathilaka (JIRA)" <ji...@apache.org> on 2016/05/27 22:00:14 UTC

[jira] [Commented] (SYNAPSE-849) Cannot reply or makefault when client sends malformed XML - org.apache.axiom.om.OMException: com.ctc.wstx.exc.WstxParsingException

    [ https://issues.apache.org/jira/browse/SYNAPSE-849?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15304875#comment-15304875 ] 

Hiranya Jayathilaka commented on SYNAPSE-849:
---------------------------------------------

I think the fix made to SYNAPSE-1011 should cover this scenario. With that fix the message should get dispatched to the fault sequence where the user can handle it in a custom way.

> 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
>              Labels: patch
>             Fix For: 2.0
>
>   Original Estimate: 1,344h
>  Remaining Estimate: 1,344h
>
> 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 was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@synapse.apache.org
For additional commands, e-mail: dev-help@synapse.apache.org