Simon I have created JIRA TUSCANY-3269 for this problem which includes the patch to setIPAddress.
Thanks Martin 2009/9/8 Simon Nash <[email protected]> > Martin Clough wrote: > >> We have a Tuscany 1.5 installation under Tomcat on one server (the >> application server), which is accessed using Apache httpd and the >> Apache/Tomcat connector on a separate web server. >> >> We are exposing SOAP web services in Tuscany, but the WSDL for these is >> incorrect because the SOAP address location has the application server >> address instead of the web server name: >> >> This is what we get: >> >> <wsdl:service name="Service"> >> >> <wsdl:port name="Port" binding="tns:Binding"> >> >> <SOAP11:address location="http://*[ip address of app >> server]*/serviceurl"/> >> >> </wsdl:port> >> >> </wsdl:service> >> >> This is what we need: >> >> <wsdl:service name="Service"> >> >> <wsdl:port name="Port" binding="tns:Binding"> >> >> <SOAP11:address location="http://*webserver*/serviceurl"/> >> >> </wsdl:port> >> >> </wsdl:service> >> >> Without this change, clients using Java 6 JAXB cannot connect to the web >> service. >> >> I have corrected this with an updated tuscany-binding-ws-axis2-1.5.jar >> which has fix in org.apache.tuscany.sca.binding.ws.axis2.TuscanyListingAgent >> to the setIPAddress method. The fix is: >> >> private static String setIPAddress(String wsdlURI, String requestURI) { >> >> try { >> >> URI wsdlURIObj = new URI(wsdlURI); >> >> String wsdlHost = wsdlURIObj.getHost(); >> >> int wsdlPort = wsdlURIObj.getPort(); >> >> String wsdlAddr = wsdlHost + (wsdlPort != -1 ? ":" + >> >> Integer.toString(wsdlPort) : ""); >> >> URI requestURIObj = new URI(requestURI); >> >> - String ipAddr = HttpUtils.getIpAddress(); >> >> + String ipAddr = requestURIObj.getHost(); >> >> int requestPort = requestURIObj.getPort(); >> >> String newAddr = ipAddr + (requestPort != -1 ? ":" + >> >> Integer.toString(requestPort) : ""); >> >> return wsdlURI.replace(wsdlAddr, newAddr); >> >> } catch (Exception e) { >> >> // URI string not in expected format, so return the WSDL URI unmodified >> >> return wsdlURI; >> >> } >> >> } >> >> I'm happy to create a JIRA and submit a patch to this effect. However, I >> suspect that this undermines the purpose of this method. So my questions >> are: what is the correct way to remedy this? Would this patch work for you? >> Is there another way of fixing this? >> >> Martin, > Thanks for reporting this. I think the inconsistency between the > treatment of ipAddr and requestPort is accidental rather than deliberate. > So please go ahead and create a JIRA with your patch, and I will commit > the patch unless someone else comes up with a reason for not making this > change. > > Simon > > Many thanks >> >> Martin >> >> >> >> >
