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

Reply via email to