We have versioned services that runs on: https://example.com:8443/v2/foo https://example.com:8443/v4/foo https://example.com:8443/v7/foo
Every time there is a backwards in-compatible change we leave the old service in place, and create a new one. This supports older clients. If the changes are backwards compatible, we only bump up the number in the URL. We also have a mediator service that runs on: https://example.com:8443/foo We want all generated clients to come in through the mediator so we can route them accordingly. So, I want to change the endpoint addresses in the WSDL of the versioned services so that they all have the endpoint address of the mediator service. This is necessary because if a version/URL is re-numbered (because it is backwards compatible), I can route the older clients to the newer service. So, in this example, I could route a v5 client to the service at the v7 URL. I have done some nifty spring EL like this right now, to set the publishedEndpointUrl: <bean id="localhost" class="java.net.InetAddress" factory-method="getLocalHost" /> <bean id="publishedWebServiceUrl" class="java.lang.String"> <constructor-arg value="#{'http://' + localhost.hostName + '/foo'}" /> </bean> <jaxws:endpoint id="fooWS" address="/v2/foo" publishedEndpointUrl="#publishedWebServiceUrl"/> But this does not get the port (in this case 8443), and it does not work if web service is behind a proxy. Instead of trying to re-build the endpoint address from scratch I was wondering if there is a way to get the existing endpoint address at runtime, massage it a little bit, and reset it - or something to that effect. tia, rouble
