We use the F5 load balancer to cluster our servers. Each web service is given a
unique DNS name. The current implementation of JBossWS only allows the user to specify the "WebServiceHost" in the jboss-service.xml. This value defaults to the machine name that the JBoss server is bound to. This value is then rewirtten into the WSDL file. The Load Balancer redirects based upon the application DNS name, not the server name. Our servers reside on a private network, thus the machine name does not work when client applications try to use the service address that was modified in the WSDL file. I know that I can hard code the DNS name in the jboss-ws4ee.sar/META-INF/jboss-service.xml file, but this limits me to only deploying a single web service per JBoss instance.
The other issue with this override from the jboss-service.xml file is that we us the Load Balancer to handle SSL communications. Since the communication to the JBoss server from the Load Balancer is on a private network, we do not use SSL to the JBoss server (for performance reasons). This creates a second problem in that the service URL that is rewitten uses the http:// protocol when we require our web services to use https://. Our Load Balancer will not pass http:// traffic to the JBoss server.
We need a method of allowing individual applications to set the <soap:address location="" /> in the WSDL file. This could be done by setting a "do not overwite URL" flag in the service properties or by adding a <port-component-url> to the applications deployment jboss.xml file.