Hi,
I have a simple web service created using the following beans:
<jaxws:endpoint id="wsServer"
implementor="#server"
address="http://localhost:8082/ScheduledEmailUser"
depends-on="jetty-factory"
>
</jaxws:endpoint>
When I look at the ?wsdl response for it (from
http://192.168.1.100:8082/ScheduledEmailUser?wsdl), it contains:
<wsdl:import
location="http://192.168.1.100:8082/ScheduledEmailUser?wsdl=EmailSchedulerTargetPortType.wsdl"
<soap:address location="http://0.0.0.0:8082/ScheduledEmailUser"/>
And if I go by machine name the wsdl:import location corrects to match.
Unfortunately that soap:address location is useless (literally).
I know I can use publishedEndpointURL to specify a value for the
soap:address location, but I have external and internal clients with
obviously different addresses for the same box.
So I need to soap:address location to match that used by the wsdl:import
(i.e. the host it was addressed as).
I'm also running via a load balancer, so it's important that it says
what the client specified, not just the IP address on which it was received.
Is this possible?
Looking at the source indicates that autoRewriteSoapAddress might be
relevant, but I can't achieve anything with it (i.e. this doesn't work:
<jaxws:endpoint id="wsServer"
implementor="#server"
address="http://localhost:8082/ScheduledEmailUser"
depends-on="jetty-factory"
>
<jaxws:properties>
<entry key="autoRewriteSoapAddress" value="true"/>
</jaxws:properties>
</jaxws:endpoint>
)
I've managed with it being wrong until now because all my clients
specified it separately - but now I've gained a Drupal client and its
module doesn't have any way to separate the URL used from the
soap:address in the WSDL.
Thanks.
Jim