Yes, I see it's only available in 2.4.2-SNAPSHOT and the trunk.

On Thu, Aug 4, 2011 at 4:40 PM, Jérôme Revillard <[email protected]> wrote:
> Hi,
>
> It seems not to be in CXF 2.4.1. I will have to test the 2.5.0-SNAPSHOT
> version. Anyway, to be clear, in fact it's the opposite, I do not want to
> disable address updates but rather want it to be done for every request
> (well, /services requests).

Address overwriting was introduced for services page and WSDL be
generated correctly, that was the only reason I believe.
This is not needed for the services page be produced anymore, but may
still be needed for WSDL generation - though I'm seeing
that WSDLGetInterceptor uses REQUEST_URL and such, so may be it's
actually not needed. If you can confirm that with 2.4.2-SNAPSHOT then
IMHO using disableAddressUpdates will be exactly what you need -
otherwise multiple threads will just interfere when overwriting the
address

Sergey

>
> Best,
> Jerome
>
>
> Le 04/08/2011 17:29, Sergey Beryozkin a écrit :
>>
>> Hi
>>
>> On Thu, Aug 4, 2011 at 4:17 PM, Jérôme Revillard<[email protected]>
>>  wrote:
>>>
>>> Hi all,
>>>
>>> Looking at this problem, I think that I found a bug inside CXF too. My
>>> use
>>> case might be a bit specific because I can access the services for 2
>>> different ports in the same host: 8443 and 443.
>>>
>>> The problem is in the
>>>
>>> org.apache.cxf.transport.servlet.ServletController#updateDests(HttpServletRequest
>>> request, boolean force) method: BaseUrlHelper.setAddress is only called
>>> the
>>> first time which is a problem for my use case. indeed, if the first
>>> request
>>> is from the 8443 port for instance, the endpoint address will always be
>>> resolved with the 8443 port in the next requests even if the used port is
>>> then 443.
>>>
>>> I think it would be good to modify:
>>>
>>>            if (ad != null
>>> &&  (ad.equals(path))) {
>>>                if (disableAddressUpdates) {
>>>
>>>  request.setAttribute("org.apache.cxf.transport.endpoint.address",
>>>                                         base + path);
>>>                } else {
>>>                    BaseUrlHelper.setAddress(d2, base + path);
>>>                }
>>>            }
>>>
>>> like this:
>>>
>>>            if (disableAddressUpdates) {
>>>
>>>  request.setAttribute("org.apache.cxf.transport.endpoint.address",
>>>                                     base + path);
>>>            } else {
>>>                BaseUrlHelper.setAddress(d2, base + path);
>>>            }
>>>
>>> What's your opinion? Is there a better way to solve my issue?
>>>
>> I think it's been fixed in CXF 2.4.1 - can you try it please ?
>> One still needs to use disableAddressUpdates though for it to be
>> thread-safe, otherwise BaseUriHelper.setAddress can be called
>> concurrently...
>> I think one more step is needed to completely disable the address
>> overwriting, but for now please set a disableAddressUpdates in CXF
>> 2.4.1 - this actually may also work in CXF 2.4.0/2.3.5
>>
>> Cheers, Sergey
>>
>>> Best,
>>> Jerome
>>>
>>> Le 04/08/2011 14:10, Jérôme Revillard a écrit :
>>>>
>>>> Hi,
>>>>
>>>> Indeed, I just checked and it sounds to be a Tomcat issue as you said...
>>>> I will investigate further.
>>>>
>>>> Thanks,
>>>> Jérôme
>>>>
>>>> Le 04/08/2011 10:01, Sergey Beryozkin a écrit :
>>>>>
>>>>> Hi
>>>>>
>>>>> On Thu, Aug 4, 2011 at 7:10 AM, Jerome Revillard<[email protected]>
>>>>>  wrote:
>>>>>>
>>>>>> Dear all,
>>>>>>
>>>>>> I don't know if it's a question for you or for tomcat but as you are
>>>>>> very
>>>>>> responsive I first post here.
>>>>>> We use CXF inside tomcat to create web services. We use the wsdl first
>>>>>> method.
>>>>>>
>>>>>> In some of our WSDL, we import xsd files. WHen we create the wsdl, the
>>>>>> paths
>>>>>> are relative to the wsdl path (i.e: schemaLocation="./xsd/job.xsd").
>>>>>> When we
>>>>>> deploy it and if we use the default tomcat https port everything if
>>>>>> fine:
>>>>>>
>>>>>> https://sec-gw-ng-devel2.maatg.fr:8443/pandora-gateway-sal-saga/job?wsdl
>>>>>>
>>>>>> For some reason, we must access the service using the default https
>>>>>> port
>>>>>> so
>>>>>> I used the regular port forwarding stuff using iptables. But then, the
>>>>>> imports URLs are not well resolved:
>>>>>> https://sec-gw-ng-devel2.maatg.fr/pandora-gateway-sal-saga/job?wsdl.
>>>>>> As
>>>>>> you
>>>>>> can see, it's written "https://sec-gw-ng-devel2.maatg.fr:80"; ...
>>>>>>
>>>>>> Could you tell me if it's a CXF issue or not?
>>>>>> If this is resolved inside the CXF source code, could you tell me
>>>>>> where
>>>>>> so
>>>>>> that I look at the problem?
>>>>>>
>>>>> CXF uses what the underlying container reports, have a look at
>>>>> ServletController.updateDestination,
>>>>> AbstractHTTPDestination.setupMessage,
>>>>> WSDLGetInterceptor.
>>>>> I suspect it's a sifeeffect of using iptables, but I'm not sure :-),
>>>>> possibly an issue in Tomcat too..,
>>>>>
>>>>> Cheers, Sergey
>>>>>
>>>>>> Jerome
>>>>>>
>>>>>> --
>>>>>> View this message in context:
>>>>>>
>>>>>> http://cxf.547215.n5.nabble.com/schemaLocation-URL-rewriting-tp4665281p4665281.html
>>>>>> Sent from the cxf-user mailing list archive at Nabble.com.
>>>>>>
>>>>>
>>> --
>>> =====================================================
>>> Dr Jérôme Revillard
>>> CTO MAAT France
>>> www.maatg.com
>>>
>>> Immeuble Alliance Entree A,
>>> 74160 Archamps (France)
>>>
>>> Mob.    0033 676 108 185
>>> Tel.    0033 450 439 602
>>> Fax.    0033 450 439 601
>>> =====================================================
>>>
>>>
>>>
>>
>>
>
> --
> =====================================================
> Dr Jérôme Revillard
> CTO MAAT France
> www.maatg.com
>
> Immeuble Alliance Entree A,
> 74160 Archamps (France)
>
> Mob.    0033 676 108 185
> Tel.    0033 450 439 602
> Fax.    0033 450 439 601
> =====================================================
>
>
>



-- 
Sergey Beryozkin

http://sberyozkin.blogspot.com
Talend - http://www.talend.com

Reply via email to