Sorry for the delay. We might look at what cxf does in this situation since they certainly have more ws experience than I do :-)
I think we should consider configuring geronimo rather than the proxy servers. After discussing this a bit with ashish I think the following might work: define a wsdl rewriting service (gbean for g 2.x) that can be configured with the header containing the actual host/port and by default uses the httpd X-Forwarded-Host. (if the header isn't present it uses the host from the request as at present). The ws-specific object gets a reference to this service (gbean) and has it do the rewriting. We can presumably use the same code for axis2, cxf (if necessary) and axis1. Comments? thanks david jencks On Feb 10, 2011, at 10:54 PM, Ashish Jain wrote: > Hi David, > > Your bit on configuring the header can be another way. We can use a standard > header name for this for example FrontEnd-Proxy-HostPort or may be some other > name. HTTP Server provides a directive where custom headers can be appended > to the requests. > http://httpd.apache.org/docs/current/mod/mod_headers.html#requestheader > > I am very much hopeful that other HTTP servers will also provide a way to > configure custom headers. > So this option is also very much acceptable. > > Thanks > Ashish > > On Thu, Feb 10, 2011 at 10:44 PM, David Jencks <[email protected]> wrote: > Hi Ashish, > > I was certainly thinking of X-Forwarded-Host. I'm not clear on whether this > header includes the original port. Google hasn't shown me much info on how > other people deal with this problem. I did find > http://httpd.apache.org/docs/current/mod/mod_proxy.html#proxypreservehost > > which appears to indicate you can configure apache httpd to not introduce > this problem in the first place. > > I can see that directly configuring the host would be useful in some > circumstances, but I think it would be easier in more circumstances to be > able to configure the header name for the original host. > > So I guess you are right and directly configuring the host is the best > solution for now. I'll let you know if I can find any more information on > this. > > thanks! > david jencks > > On Feb 10, 2011, at 6:28 AM, Ashish Jain wrote: > >> Hi David, >> >> I am not sure if we can use the request object. The request >> (org.apache.geronimo.webservices.WebServiceContainer.Request) object gives >> you the address for the remote host which is the address for the proxy >> server, however no information on the port. Another way could have been to >> utilize the header "request.getHeader("X-Forwarded-Host")" but this is not a >> standard header AFAIK. So this option can also to be ruled out. So I think >> modifying the schema is the best way ahead. >> >> Thanks >> Ashish >> >> On Tue, Feb 8, 2011 at 6:34 PM, Ashish Jain <[email protected]> wrote: >> Thanks David and Jarek. I am investigating on the comment made by David and >> seems to have found some headers which are being appended by HTTP server. I >> will investigate further in this direction to find out if the request object >> can be used to attain this. >> >> Thanks >> Ashish >> >> >> On Tue, Feb 8, 2011 at 1:06 AM, David Jencks <[email protected]> wrote: >> Changing the schema like this shouldn't be a problem if its necessary. I'd >> like to understand better why its necessary. Perhaps there's another way. >> >> I thought that the way this was coded was that the host and port from the >> incoming request were stuffed into the wsdl being returned. Doesn't the >> proxy server tell us what the original request was in some way such as a >> request attribute? Could we look for that information and use it if >> available and use the request itself if not? >> >> thanks >> david jencks >> >> On Feb 7, 2011, at 10:39 AM, Jarek Gawor wrote: >> >> > Ashish, >> > >> > Modifying the schema (without changing the namespace) is fine as long >> > as you make the new element(s) optional. That at least is what we have >> > done in the past. >> > >> > Jarek >> > >> > On Fri, Jan 28, 2011 at 10:00 AM, Ashish Jain <[email protected]> wrote: >> >> Hi, >> >> >> >> When geronimo is front ended with a proxy say Apache HTTP server and a web >> >> service is invoked via this proxy. The auto >> >> generated wsdl will have the soap:address as >> >> http://<g_host>:<g_port>/service_name. Instead it should be >> >> http://<proxy_host>: >> >> <proxy:port>/service_name. The method which takes care of all this is >> >> org.apache.geronimo.axis2.WSDLQueryHandler.writeResponse >> >> . The baseUri attribute in the class has to be modified so that >> >> appropriate >> >> soap:address can be written in the wsdl file. >> >> >> >> So as to get this property into geronimo one of the way would be to be >> >> able >> >> to specify in geronimo deployment descriptor. >> >> Adding a new attribute may require schema change. >> >> >> >> Is this acceptable? Are there any other alternative ways through which >> >> this >> >> can be achieved? >> >> >> >> Thanks >> >> Ashish >> >> >> >> >> > >
