Mail transport: synchronous invocation style doesn't work correctly
-------------------------------------------------------------------
Key: WSCOMMONS-544
URL: https://issues.apache.org/jira/browse/WSCOMMONS-544
Project: WS-Commons
Issue Type: Bug
Components: Transport
Reporter: Andreas Veithen
The change in r698486 introduced support for the synchronous invocation style
in the mail transport. This was implemented by using a callback pattern where
the transport sender waits until the transport listener receives the response
message and invokes the callback. This however doesn't work as expected. The
reason is that after receiving the message, the mail transport listener will
close the input stream for the message (and potentially release some other
resources, such as closing the mail folder). On the server side, this works
well because the listener invokes AxisEngine.receive, which only returns after
the service has processed the message. However, on the client side, it will
invoke the callback, which will not process the message, but only store it. By
the time the client attempts to process the response, the underlying input
stream is already closed. This leads to errors such as this one:
java.lang.RuntimeException: [was class java.io.IOException] Stream closed
at
com.ctc.wstx.util.ExceptionUtil.throwRuntimeException(ExceptionUtil.java:18)
at com.ctc.wstx.sr.StreamScanner.throwLazyError(StreamScanner.java:706)
at
com.ctc.wstx.sr.BasicStreamReader.safeFinishToken(BasicStreamReader.java:3655)
at com.ctc.wstx.sr.BasicStreamReader.getText(BasicStreamReader.java:809)
at
org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.getText(XMLStreamReaderWrapper.java:160)
at
org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper.getText(XMLStreamReaderWrapper.java:160)
at
org.apache.axiom.om.impl.builder.StAXBuilder.createOMText(StAXBuilder.java:289)
at
org.apache.axiom.om.impl.builder.StAXBuilder.createOMText(StAXBuilder.java:252)
at
org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:267)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.