Raul Kripalani created CXF-5581:
-----------------------------------

             Summary: Dynamic endpoint address is buggy unless 
ConduitSelector.compareFullUrl is enabled
                 Key: CXF-5581
                 URL: https://issues.apache.org/jira/browse/CXF-5581
             Project: CXF
          Issue Type: Bug
          Components: Core
    Affects Versions: 2.7.6
            Reporter: Raul Kripalani


When using the RequestContext Message.ENDPOINT_ADDRESS option in an CXF-WS 
client to override the configured endpoint address with a different one during 
runtime, the endpoint "fixates" on the first endpoint address ever effectively 
used after initialization.

Try this:

# Set up http://aaaa:8080 as the endpoint address in the configuration.
# Initialize the JAX-WS client.
# Send a first request with the Message.ENDPOINT_ADDRESS request context 
property set to http://bbbb:8080.
# CXF calls http://bbbb:8080 correctly as expected.
# Send a second request without the Message.ENDPOINT_ADDRESS property, i.e. no 
overriding. 
# You were expecting a call to http://aaaa:8080, but CXF calls 
http://bbbb:8080, because this is how the conduit was initialized.

The problem lies in AbstractConduitSelector#findCompatibleConduit, which by 
default only uses the URI scheme (protocol, e.g. http, https) to select the 
conduit, failing to acknowledge that the address could have been overridden at 
runtime.

This behaviour can be switched to the expected behaviour by explicitly setting 
the org.apache.cxf.ConduitSelector.compareFullUrl property to 'true' in the 
context. 

However, this is largely obscure, not documented anywhere and user unfriendly. 
In my opinion, it should work as expected OOTB.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to