[ 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-unsubscr...@synapse.apache.org For additional commands, e-mail: dev-h...@synapse.apache.org