[ https://issues.apache.org/jira/browse/CXF-3976?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Daniel Kulp resolved CXF-3976. ------------------------------ Resolution: Fixed Fix Version/s: 2.4.6 2.5.1 Assignee: Daniel Kulp > SoapTransportFactory.getConduit(EndpointInfo ei, EndpointReferenceType > target) ignores 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 > Assignee: Daniel Kulp > Fix For: 2.5.1, 2.4.6 > > Attachments: SoapTransportFactory.patch > > > 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: > {code:java} > 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); > } > {code} > 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