It has been this way for a long time. I suspect that until now no-one
has thought of the retransmission use case. I agree that this is a
good reason for creating a new message object to hold the exception.
What do the other bindings do?
Simon
Simon Laws wrote:
If Axis2 returns a fault it sets the fault into the contents of the original
message. In the Axis2BindingInvoker the invoke code looks like this...
public Message invoke(Message msg) {
try {
Object resp = invokeTarget(msg);
msg.setBody(resp);
} catch (AxisFault e) {
if (e.getDetail() != null) {
FaultException f = new FaultException(e.getMessage(),
e.getDetail());
f.setLogical(e.getDetail().getQName());
msg.setFaultBody(f);
} else {
msg.setFaultBody(e);
}
} catch (Throwable e) {
msg.setFaultBody(e);
}
return msg;
}
Why does it set values in the input message as well as returning it as a
return value? I can see the point in the case of a real return value as you
avoid the resource of creating a extra message object. In the fault case
though this limits the ability of the infrastructure to resend the message
if it wants to as it gets overwritten.
Simon
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]