You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by James Waldrop <ja...@opsource.net> on 2005/12/17 01:40:16 UTC

problem with updateSoapAddressLocationURLs

I have been trying for a day or so to work around this problem, and I
think I've finally exhausted my ability to make forward progress on my
own. 

My situation is that I am running a service over SSL, but SSL is handled
by a hardware accelerator that also does load balancing. I imagine that
many people on this list also run in such a configuration. 

The problem is that my WSDL is being returned by Axis with an http URL,
even though the service is running behind https as far as clients are
concerned. After a fair amount of investigation, I came up with two
significant possibilities that might help me work around this issue: 

1) Add a handler to the request chain that rewrites the msgContext
TransportName. I tried doing this, and still it was coming back as http,
even though I was able to confirm that my handler was being called, and
the msgContext was being updated properly. 

2) Add a <wsdlFile> element to my service description, with the location
obviously being specified as https instead of http. I was also able to
confirm that my file was being read, but the location was being
rewritten as http. 

I dug into this further, and the final bit of code in
QSWSDLHandler.invoke() showed me the problem: 

           if (wsdlDoc != null) { 
               try { 
                   updateSoapAddressLocationURLs(wsdlDoc, msgContext); 
               } catch (RuntimeException re) { ... } 
               response.setContentType( 
                       "text/xml; charset=" + 
                       XMLUtils.getEncoding().toLowerCase()); 
               reportWSDL(wsdlDoc, writer); 
           } else { ... } 

And the Javadoc for updateSoapAddressLocationURLs is: 

   /** 
    * Updates the soap:address locations for all ports in the WSDL using
the URL from the request as 
    * the base portion for the updated locations, ensuring the WSDL
returned to the client contains 
    * the correct location URL. 
    * ... 
    */ 

This behavior is obviously incorrect for my situation, but I do not see
anywhere in the code that I can override it. In fact, it overrides all
attempts to do so. 

Any ideas? 

James