String transportID = ei.getTransportId();
try {
ConduitInitiatorManager conduitInitiatorMgr = exchange.getBus()
.getExtension(ConduitInitiatorManager.class);
if (conduitInitiatorMgr != null) {
ConduitInitiator conduitInitiator =
conduitInitiatorMgr.getConduitInitiator(transportID);
if (conduitInitiator != null) {
String add = (String)message.get(Message.ENDPOINT_ADDRESS);
if (StringUtils.isEmpty(add)
|| add.equals(ei.getAddress())) {
selectedConduit = conduitInitiator.getConduit(ei);
} else {
EndpointReferenceType epr = new EndpointReferenceType();
AttributedURIType ad = new AttributedURIType();
ad.setValue(add);
epr.setAddress(ad);
selectedConduit = conduitInitiator.getConduit(ei, epr);
}
MessageObserver observer =
exchange.get(MessageObserver.class);
if (observer != null) {
selectedConduit.setMessageObserver(observer);