SoapTransportFactory.getConduit(EndpointInfo ei, EndpointReferenceType target)
ignors second parameter
------------------------------------------------------------------------------------------------------
Key: CXF-3976
URL: https://issues.apache.org/jira/browse/CXF-3976
Project: CXF
Issue Type: Bug
Components: Core
Affects Versions: 2.5
Environment: Windows
Reporter: Andrei Shakirin
Hi,
I faced the problem in custom conduit selector scenario.
Use case: custom conduit selector (extends AbstractConduitSelector) resolves
endpoints dynamically (using external ServiceRegistry).
When address is resolved, resolved address cannot be set to
AbstractConduitSelector.endpoint, because different concurrent consumers using
the same configuration can resolve endpoint differently.
Therefore address is just set to the message:
message.set(Message.ENDPOINT_ADDRESS, resolvedAddress)
In this case addresses in message: message.get(Message.ENDPOINT_ADDRESS) and
in endpoint: AbstractConduitSelector.endpoint.getEndpointInfo().getAddress()
are different.
AbstractConduitSelector check it and prepares EndpointReferenceType for this
case:
String add =
(String)message.get(Message.ENDPOINT_ADDRESS);
if (StringUtils.isEmpty(add)
|| add.equals(ei.getAddress())) {
replaceEndpointAddressPropertyIfNeeded(message,
add);
selectedConduit = conduitInitiator.getConduit(ei);
} else {
EndpointReferenceType epr = new
EndpointReferenceType();
AttributedURIType ad = new AttributedURIType();
ad.setValue(add);
epr.setAddress(ad);
selectedConduit = conduitInitiator.getConduit(ei,
epr);
}
Problem: unfortunately SoapTransportFactory.getConduit(EndpointInfo ei,
EndpointReferenceType target) ignores second parameter and calls
SoapTransportFactory.getConduit(EndpointInfo ei). In my case it causes wrong
Conduit resolving.
Proposal: update SoapTransportFactory.getConduit() in way that it uses address
in EndpointReferenceType if it is provided.
Patch is attached.
Regards,
Andrei.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira