[
https://wso2.org/jira/browse/ESBJAVA-522?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17368#action_17368
]
Asankha Perera commented on ESBJAVA-522:
----------------------------------------
Eric
Can you please attach the synapse.xml and/or any steps to reproduce this.. I
tried debugging sample #5 and within the debugger, I could get both
OMElement faultcode = (OMElement) fault.getChildrenWithName(new
QName("faultcode")).next();
OMElement faultmessage = (OMElement) fault.getChildrenWithName(new
QName("faultstring")).next();
I suspect a SOAP version / namespace mismatch or your configuration is trying
this code "after" an http send out? If so, one of the performance enhancements
we did was to not build the full message XML in memory when sending out. I can
suggest a workaround for this after looking at the configuration.
Feel free to send it directly to me if you do not want to post it here
asankha
> Accessing SOAP fault code and fault message via Axis2/Axiom-API does not work
> -----------------------------------------------------------------------------
>
> Key: ESBJAVA-522
> URL: https://wso2.org/jira/browse/ESBJAVA-522
> Project: WSO2 ESB
> Issue Type: Bug
> Affects Versions: 1.7
> Reporter: Eric Hubert
> Assignee: Asankha Perera
> Priority: Blocker
>
> We are using the following code to access SOAP faultcode and faultstring:
> if (axis2MessageCtx.getEnvelope().getBody().getFault() != null) {
> SOAPFault fault = axis2MessageCtx.getEnvelope().getBody().getFault();
> OMElement faultcode = (OMElement) fault.getChildrenWithName(new
> QName("faultcode")).next();
> messagePropertyDTO.setFaultCode(faultcode.getText());
> OMElement faultmessage = (OMElement) fault.getChildrenWithName(new
> QName("faultstring")).next();
> messagePropertyDTO.setFault(faultmessage.getText());
> }
> it works with WSO2 ESB 1.7 Beta-2. In the proposed final version we get the
> following exception:
> 2008-06-09 10:20:24,261 [127.0.0.1-berjbolle-lx1] [HttpServerWorker-1] INFO
> TimeoutHandler This engine will expire all callbacks after : 86400 seconds,
> irrespective of the timeout action, after the specified or optional timeout
> Exception in thread "HttpClientWorker-1" org.apache.axiom.om.OMException:
> java.util.NoSuchElementException
> at
> org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:249)
> at
> org.apache.axiom.om.impl.llom.OMElementImpl.buildNext(OMElementImpl.java:633)
> at
> org.apache.axiom.om.impl.llom.OMElementImpl.getFirstOMChild(OMElementImpl.java:650)
> at
> org.apache.axiom.om.impl.llom.OMElementImpl.getChildrenWithName(OMElementImpl.java:217)
> at
> de.jamba.soa.esb.wso2.mediator.jtrace.JTraceMediator.setResponseProperties(JTraceMediator.java:130)
> at
> de.jamba.soa.esb.wso2.mediator.jtrace.JTraceMediator.mediate(JTraceMediator.java:65)
> at
> org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:58)
> at
> org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:125)
> at
> org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:174)
> at
> org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:58)
> at
> org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:125)
> at
> org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:162)
> at
> org.apache.synapse.core.axis2.SynapseCallbackReceiver.handleMessage(SynapseCallbackReceiver.java:301)
> at
> org.apache.synapse.core.axis2.SynapseCallbackReceiver.receive(SynapseCallbackReceiver.java:131)
> at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:176)
> at
> org.apache.synapse.transport.nhttp.ClientWorker.run(ClientWorker.java:200)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
> at java.lang.Thread.run(Thread.java:619)
> Caused by: java.util.NoSuchElementException
> at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1083)
> at
> org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuilder.java:506)
> at
> org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:161)
> ... 18 more
> One other problem we noticed on the way is a strange behaviour of
> getChildrenWithLocalName(). If we changed the above code in 1.7 Beta 2 to
> this:
> if (axis2MessageCtx.getEnvelope().getBody().getFault() != null) {
> SOAPFault fault = axis2MessageCtx.getEnvelope().getBody().getFault();
> OMElement faultcode = (OMElement)
> fault.getChildrenWithName("faultcode").next();
> messagePropertyDTO.setFaultCode(faultcode.getText());
> OMElement faultmessage = (OMElement)
> fault.getChildrenWithName("faultstring").next();
> messagePropertyDTO.setFault(faultmessage.getText());
> }
> getChildrenWithName() always returned the first Element. No matter of the
> specified string. It could also be "abc" which was not present. I would also
> consider this to be a bug.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://wso2.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
_______________________________________________
Esb-java-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/esb-java-dev