I may be wrong about this, but I believe cxf defines an endpointURL value which overrides the default behaviour with respect to wsdl/soap:address.

I did a bit of reading around this a month or two back, and it seemed to be pretty well documented.


On Tue, Feb 15, 2011 at 8:54 AM, David Jencks <david_jencks@yahoo.com> wrote:
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. 


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.

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.


On Thu, Feb 10, 2011 at 10:44 PM, David Jencks <david_jencks@yahoo.com> 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 

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.

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.


On Tue, Feb 8, 2011 at 6:34 PM, Ashish Jain <ashjain2@gmail.com> 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.


On Tue, Feb 8, 2011 at 1:06 AM, David Jencks <david_jencks@yahoo.com> 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?

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 <ashjain2@gmail.com> 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