You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Bin Zhu <lu...@gmail.com> on 2012/11/27 07:29:39 UTC

service location in WSDL generated by CXF

Hi All,
I find that when define 2 service using a SEI class and a Service provider
class, if query the service defined by SEI, then in the WSDL generated by
CXF, it will only update the service location for this SEI service, but the
location defined by service provider will not be updated.
Is this behavior as design? Could it update all the service location rather
than only the requested one? Thanks in advance.

Service defined by SEI:
@WebService(targetNamespace="http://inventory.wsdlfaults.jaxws",
            wsdlLocation="WEB-INF/wsdl/Inventory.wsdl",
            serviceName="InventoryService",
            portName="InventoryPort",

endpointInterface="jaxws.wsdlfaults.wsfvt.server.inventory.InventoryPortType")
Service defined by Service Provider:
@WebServiceProvider(targetNamespace="http://inventory.wsdlfaults.jaxws",
                    wsdlLocation="WEB-INF/wsdl/Inventory.wsdl",
                    serviceName="InventoryProvider",
                    portName="InventoryProviderPort")

WSDL generated by CXF using this URL:
http://localhost:9080/jaxws-wsdlfaults2/InventoryService?wsdl

<service name="InventoryService">
<port binding="tns:InventoryBinding" name="InventoryPort">
<soap:address location="
http://localhost:9080/jaxws-wsdlfaults2/InventoryService"></soap:address>
</port>
</service>
<service name="InventoryProvider">
<port binding="tns:InventoryBinding" name="InventoryProviderPort">
<soap:address location="/InventoryProvider"></soap:address>
</port>
</service>

Re: service location in WSDL generated by CXF

Posted by Bin Zhu <lu...@gmail.com>.
Hi Alessio,
I tested the new patch and it works in my scenario. Thanks.

2012/12/12 Alessio Soldano <as...@redhat.com>

> Hi Bin,
> I've created https://issues.apache.org/jira/browse/CXF-4695 to deal with
> the issue, given CXF-4677 has already been included in a release.
> Please have a look at the patch I've attached to CXF-4695, I believe
> that should be fine for both your scenario and mine (the patch you
> previously attached to 4677 was not ok for me).
> If the patch is fine I'll likely add a testcase and commit.
> Cheers
> Alessio
>
> On 12/10/2012 10:58 AM, Bin Zhu wrote:
> > Thanks Alessio :-)
> >
> > 2012/12/10 Alessio Soldano <as...@redhat.com>
> >
> >> Hi Bin,
> >> just read your message (Friday was bank holiday here). I'll check your
> >> patch and improve my fix to cover your scenario too.
> >> Will create a new jira and link to the current one, as the release
> >> process for 2.7.1 has been started in the meantime.
> >> Cheers
> >> Alessio
> >>
> >> On 12/07/2012 09:28 AM, Bin Zhu wrote:
> >>> Hi Alessio,
> >>>
> >>> I've attached the patch here
> >>>
> https://issues.apache.org/jira/secure/attachment/12559830/CXF-4677.patch
> >>> Can you help review it? Thanks.
> >>>
> >>>
> >>> 2012/12/6 Alessio Soldano <as...@redhat.com>
> >>>
> >>>> Hi Bin,
> >>>> ok, either commit or attach an additional patch to CXF-4677 jira and
> let
> >>>> me review before the upcoming release ;-)
> >>>>
> >>>> Alessio
> >>>>
> >>>> On 12/06/2012 08:23 AM, Bin Zhu wrote:
> >>>>> Hi,
> >>>>>
> >>>>> Thanks for the quick response.  I've tried this patch but it doesn't
> >>>> update
> >>>>> all the soapaddress locations in my test.
> >>>>>
> >>>>> Looked into the code and find that reason is an Exception will be
> throw
> >>>> in
> >>>>> the following line in new added
> >>>> WSDLGetUtils.rewriteAddressProtocolHostPort
> >>>>> method:
> >>>>>  URL locUrl = new URL(location); // Exception will be thrown in this
> >> line
> >>>>> since the value of location is like"/InventoryService"
> >>>>>
> >>>>> It is suggested to get the  http base path by using " String
> basePath =
> >>>>> (String) message.get("http.base.path")" in rewriteAllSoapAddress
> logic,
> >>>>> then append it to the soapaddress location
> >>>>> in WSDLGetUtils.rewriteAddressProtocolHostPort method.
> >>>>>
> >>>>> I made the changes and it works in my local box. I would like to make
> >>>> this
> >>>>> fix if you don't mind. Thanks.
> >>>>>
> >>>>>
> >>>>>
> >>>>> 2012/12/5 Alessio Soldano <as...@redhat.com>
> >>>>>
> >>>>>> Hi,
> >>>>>> I've committed a patch for supporting
> >>>>>> 'autoRewriteSoapAddressForAllServices' option. The main difference
> >> with
> >>>>>> what the already existing 'autoRewriteSoapAddress' option did, is
> that
> >>>>>> when rewriting the other service/ports soap:address location
> >> attributes,
> >>>>>> the existing path component of the address is not changed, as that
> >> would
> >>>>>> not really make sense.
> >>>>>>
> >>>>>> The new option is an extension of the former one; so setting the new
> >> one
> >>>>>> to true implies also enable the former one (IOW the current
> >> service/port
> >>>>>> address is also fully rewritten).
> >>>>>>
> >>>>>> Cheers
> >>>>>> Alessio
> >>>>>>
> >>>>>> On 12/05/2012 11:51 AM, Andrei Shakirin wrote:
> >>>>>>> Issue https://issues.apache.org/jira/browse/CXF-4677 is created.
> >>>>>>> Would you like to deliver the patch yourself?
> >>>>>>>
> >>>>>>> Cheers,
> >>>>>>> Andrei.
> >>>>>>>
> >>>>>>>> -----Original Message-----
> >>>>>>>> From: Bin Zhu [mailto:luckyzhubin@gmail.com]
> >>>>>>>> Sent: Mittwoch, 5. Dezember 2012 07:24
> >>>>>>>> To: users@cxf.apache.org
> >>>>>>>> Subject: Re: service location in WSDL generated by CXF
> >>>>>>>>
> >>>>>>>> Many thanks to all of you about the suggestions.
> >>>>>>>>
> >>>>>>>> To Alessio,
> >>>>>>>> As we are working on migrating our application to CXF and these
> >>>>>> application
> >>>>>>>> needs this function to work, can you estimate when the fix could
> be
> >>>>>>>> delivered? It will be helpful for us to size and schedule the
> whole
> >>>>>> migration
> >>>>>>>> work. Thanks.
> >>>>>>>>
> >>>>>>>> 2012/12/4 Alessio Soldano <as...@redhat.com>
> >>>>>>>>
> >>>>>>>>> I agree with the need of such a functionality.
> >>>>>>>>> I'm likely going to work on this soon, will post the jira
> reference
> >>>>>> later.
> >>>>>>>>> Default behaviour can for sure stay as is, but I see scenarios
> >>>>>>>>> requiring a different configuration (e.g. all endpoints,
> belonging
> >> to
> >>>>>>>>> the same wsdl service, to be updated using the configured
> >>>> EndpointInfo
> >>>>>>>>> published url property before writing the wsdl definition and
> >>>>>>>>> returning it for the current query).
> >>>>>>>>>
> >>>>>>>>> Cheers
> >>>>>>>>> Alessio
> >>>>>>>>>
> >>>>>>>>> On 12/03/2012 05:56 PM, Andrei Shakirin wrote:
> >>>>>>>>>> Hi Ivan,
> >>>>>>>>>>
> >>>>>>>>>> I can imagine that in some cases it makes sense to update all
> WSDL
> >>>>>>>>> service endpoints, but I wouldn't configure it by default.
> >>>>>>>>>> We can introduce additional context property
> >>>>>>>>> "rewriteSoapAddressForAllServices" (like autoRewriteSoapAddress ,
> >>>>>>>>> publishedEndpointUrl) and if it is activated, endpoint of all
> >>>> relevant
> >>>>>>>>> services will be updated. Default value will be false.
> >>>>>>>>>> Logic located in WSDLGetUtils.updateDoc().
> >>>>>>>>>>
> >>>>>>>>>> Cheers,
> >>>>>>>>>> Andrei.
> >>>>>>>>>>
> >>>>>>>>>>> -----Original Message-----
> >>>>>>>>>>> From: Ivan [mailto:xhhsld@gmail.com]
> >>>>>>>>>>> Sent: Sonntag, 2. Dezember 2012 16:08
> >>>>>>>>>>> To: users@cxf.apache.org
> >>>>>>>>>>> Subject: Re: service location in WSDL generated by CXF
> >>>>>>>>>>>
> >>>>>>>>>>> Well, I agree that, the accessing address for other ports may
> not
> >>>>>>>>> correct
> >>>>>>>>>>> in some scenarios. While thinking the common usage in the Java
> EE
> >>>>>>>>>>> environment, we usually publish those endpoints in one web app,
> >> and
> >>>>>>>>>>> the target web app will be accessed in one host, which
> associated
> >>>>>>>>>>> with web connectors. So, I am thinking that this is a good
> idea,
> >>>>>>>>>>> and maybe a flag could be used to determine the behavior.
> >>>>>>>>>>>
> >>>>>>>>>>> I added the similar function in Apache Geronimo, and think that
> >> it
> >>>>>>>>>>> will
> >>>>>>>>> be
> >>>>>>>>>>> better that CXF could provide kind of native support for this.
> >>>>>>>>>>> [1]
> >>>>>>>>>>>
> >>>> https://svn.apache.org/repos/asf/geronimo/server/branches/3.0/plugi
> >>>>>>>>>>> ns/a
> >>>>>>>>>>> xis2/geronimo-
> >>>>>>>>>>>
> >>>>>>>>
> axis2/src/main/java/org/apache/geronimo/axis2/WSDLQueryHandler.java
> >>>>>>>>>>>
> >>>>>>>>>>> Thoughts ?
> >>>>>>>>>>>
> >>>>>>>>>>> 2012/11/29 Andrei Shakirin <as...@talend.com>
> >>>>>>>>>>>
> >>>>>>>>>>>> Proposed update of all services endpoints can be in some cases
> >>>>>>>>> incorrect.
> >>>>>>>>>>>> The absolute endpoint URL can be determined only from incoming
> >>>>>>>> request.
> >>>>>>>>>>> As
> >>>>>>>>>>>> far as you request InventoryService, not InventoryProvider;
> only
> >>>>>>>>>>>> InventoryService endpoint is updated.
> >>>>>>>>>>>> Imagine, you request InventoryProvider using other URL (for
> >>>>>>>>>>>> example
> >> http://127.0.0.1:9080/jaxws-wsdlfaults2/InventoryProvider
> >>>> ,
> >>>>>>>>>>>> or even
> >>>>>>>>> using
> >>>>>>>>>>>> other port) and InventoryProvider will have absolute URL
> >> different
> >>>>>>>>>>>> as InventoryService.
> >>>>>>>>>>>>
> >>>>>>>>>>>> Cheers,
> >>>>>>>>>>>> Andrei.
> >>>>>>>>>>>>
> >>>>>>>>>>>>> -----Original Message-----
> >>>>>>>>>>>>> From: Bin Zhu [mailto:luckyzhubin@gmail.com]
> >>>>>>>>>>>>> Sent: Dienstag, 27. November 2012 07:30
> >>>>>>>>>>>>> To: users@cxf.apache.org
> >>>>>>>>>>>>> Subject: service location in WSDL generated by CXF
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Hi All,
> >>>>>>>>>>>>> I find that when define 2 service using a SEI class and a
> >> Service
> >>>>>>>>>>>> provider class,
> >>>>>>>>>>>>> if query the service defined by SEI, then in the WSDL
> generated
> >>>>>>>>>>>>> by
> >>>>>>>>> CXF,
> >>>>>>>>>>>> it will
> >>>>>>>>>>>>> only update the service location for this SEI service, but
> the
> >>>>>>>>> location
> >>>>>>>>>>>> defined
> >>>>>>>>>>>>> by service provider will not be updated.
> >>>>>>>>>>>>> Is this behavior as design? Could it update all the service
> >>>>>>>>>>>>> location
> >>>>>>>>>>>> rather than
> >>>>>>>>>>>>> only the requested one? Thanks in advance.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Service defined by SEI:
> >>>>>>>>>>>>>
> >>>>>>>> @WebService(targetNamespace="http://inventory.wsdlfaults.jaxws",
> >>>>>>>>>>>>>             wsdlLocation="WEB-INF/wsdl/Inventory.wsdl",
> >>>>>>>>>>>>>             serviceName="InventoryService",
> >>>>>>>>>>>>>             portName="InventoryPort",
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>
> >>>> endpointInterface="jaxws.wsdlfaults.wsfvt.server.inventory.InventoryPo
> >>>>>>>>> rtT
> >>>>>>>>>>>>> ype")
> >>>>>>>>>>>>> Service defined by Service Provider:
> >>>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>> @WebServiceProvider(targetNamespace="
> http://inventory.wsdlfaults.ja
> >>>>>>>>>>> xw
> >>>>>>>>>>>>> s",
> >>>>>>>>>>>>>
> wsdlLocation="WEB-INF/wsdl/Inventory.wsdl",
> >>>>>>>>>>>>>                     serviceName="InventoryProvider",
> >>>>>>>>>>>>>                     portName="InventoryProviderPort")
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> WSDL generated by CXF using this URL:
> >>>>>>>>>>>>>
> http://localhost:9080/jaxws-wsdlfaults2/InventoryService?wsdl
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> <service name="InventoryService"> <port
> >>>>>>>>>>>>> binding="tns:InventoryBinding" name="InventoryPort">
> >>>>>>>>>>>>> <soap:address location="
> >>>>>>>>>>>>> http://localhost:9080/jaxws-wsdlfaults2/InventoryService
> >>>>>>>>>>>> "></soap:address>
> >>>>>>>>>>>>> </port>
> >>>>>>>>>>>>> </service>
> >>>>>>>>>>>>> <service name="InventoryProvider"> <port
> >>>>>>>>>>>>> binding="tns:InventoryBinding" name="InventoryProviderPort">
> >>>>>>>>>>>>> <soap:address location="/InventoryProvider"></soap:address>
> >>>>>>>>>>>>> </port>
> >>>>>>>>>>>>> </service>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>> --
> >>>>>>>>>>> Ivan
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> --
> >>>>>>>>> Alessio Soldano
> >>>>>>>>> Web Service Lead, JBoss
> >>>>>>>>>
> >>>>>>
> >>>>>>
> >>>>>> --
> >>>>>> Alessio Soldano
> >>>>>> Web Service Lead, JBoss
> >>>>>>
> >>>>>
> >>>>
> >>>>
> >>>> --
> >>>> Alessio Soldano
> >>>> Web Service Lead, JBoss
> >>>>
> >>>
> >>
> >>
> >> --
> >> Alessio Soldano
> >> Web Service Lead, JBoss
> >>
> >
>
>
> --
> Alessio Soldano
> Web Service Lead, JBoss
>

Re: service location in WSDL generated by CXF

Posted by Alessio Soldano <as...@redhat.com>.
Hi Bin,
I've created https://issues.apache.org/jira/browse/CXF-4695 to deal with
the issue, given CXF-4677 has already been included in a release.
Please have a look at the patch I've attached to CXF-4695, I believe
that should be fine for both your scenario and mine (the patch you
previously attached to 4677 was not ok for me).
If the patch is fine I'll likely add a testcase and commit.
Cheers
Alessio

On 12/10/2012 10:58 AM, Bin Zhu wrote:
> Thanks Alessio :-)
> 
> 2012/12/10 Alessio Soldano <as...@redhat.com>
> 
>> Hi Bin,
>> just read your message (Friday was bank holiday here). I'll check your
>> patch and improve my fix to cover your scenario too.
>> Will create a new jira and link to the current one, as the release
>> process for 2.7.1 has been started in the meantime.
>> Cheers
>> Alessio
>>
>> On 12/07/2012 09:28 AM, Bin Zhu wrote:
>>> Hi Alessio,
>>>
>>> I've attached the patch here
>>> https://issues.apache.org/jira/secure/attachment/12559830/CXF-4677.patch
>>> Can you help review it? Thanks.
>>>
>>>
>>> 2012/12/6 Alessio Soldano <as...@redhat.com>
>>>
>>>> Hi Bin,
>>>> ok, either commit or attach an additional patch to CXF-4677 jira and let
>>>> me review before the upcoming release ;-)
>>>>
>>>> Alessio
>>>>
>>>> On 12/06/2012 08:23 AM, Bin Zhu wrote:
>>>>> Hi,
>>>>>
>>>>> Thanks for the quick response.  I've tried this patch but it doesn't
>>>> update
>>>>> all the soapaddress locations in my test.
>>>>>
>>>>> Looked into the code and find that reason is an Exception will be throw
>>>> in
>>>>> the following line in new added
>>>> WSDLGetUtils.rewriteAddressProtocolHostPort
>>>>> method:
>>>>>  URL locUrl = new URL(location); // Exception will be thrown in this
>> line
>>>>> since the value of location is like"/InventoryService"
>>>>>
>>>>> It is suggested to get the  http base path by using " String basePath =
>>>>> (String) message.get("http.base.path")" in rewriteAllSoapAddress logic,
>>>>> then append it to the soapaddress location
>>>>> in WSDLGetUtils.rewriteAddressProtocolHostPort method.
>>>>>
>>>>> I made the changes and it works in my local box. I would like to make
>>>> this
>>>>> fix if you don't mind. Thanks.
>>>>>
>>>>>
>>>>>
>>>>> 2012/12/5 Alessio Soldano <as...@redhat.com>
>>>>>
>>>>>> Hi,
>>>>>> I've committed a patch for supporting
>>>>>> 'autoRewriteSoapAddressForAllServices' option. The main difference
>> with
>>>>>> what the already existing 'autoRewriteSoapAddress' option did, is that
>>>>>> when rewriting the other service/ports soap:address location
>> attributes,
>>>>>> the existing path component of the address is not changed, as that
>> would
>>>>>> not really make sense.
>>>>>>
>>>>>> The new option is an extension of the former one; so setting the new
>> one
>>>>>> to true implies also enable the former one (IOW the current
>> service/port
>>>>>> address is also fully rewritten).
>>>>>>
>>>>>> Cheers
>>>>>> Alessio
>>>>>>
>>>>>> On 12/05/2012 11:51 AM, Andrei Shakirin wrote:
>>>>>>> Issue https://issues.apache.org/jira/browse/CXF-4677 is created.
>>>>>>> Would you like to deliver the patch yourself?
>>>>>>>
>>>>>>> Cheers,
>>>>>>> Andrei.
>>>>>>>
>>>>>>>> -----Original Message-----
>>>>>>>> From: Bin Zhu [mailto:luckyzhubin@gmail.com]
>>>>>>>> Sent: Mittwoch, 5. Dezember 2012 07:24
>>>>>>>> To: users@cxf.apache.org
>>>>>>>> Subject: Re: service location in WSDL generated by CXF
>>>>>>>>
>>>>>>>> Many thanks to all of you about the suggestions.
>>>>>>>>
>>>>>>>> To Alessio,
>>>>>>>> As we are working on migrating our application to CXF and these
>>>>>> application
>>>>>>>> needs this function to work, can you estimate when the fix could be
>>>>>>>> delivered? It will be helpful for us to size and schedule the whole
>>>>>> migration
>>>>>>>> work. Thanks.
>>>>>>>>
>>>>>>>> 2012/12/4 Alessio Soldano <as...@redhat.com>
>>>>>>>>
>>>>>>>>> I agree with the need of such a functionality.
>>>>>>>>> I'm likely going to work on this soon, will post the jira reference
>>>>>> later.
>>>>>>>>> Default behaviour can for sure stay as is, but I see scenarios
>>>>>>>>> requiring a different configuration (e.g. all endpoints, belonging
>> to
>>>>>>>>> the same wsdl service, to be updated using the configured
>>>> EndpointInfo
>>>>>>>>> published url property before writing the wsdl definition and
>>>>>>>>> returning it for the current query).
>>>>>>>>>
>>>>>>>>> Cheers
>>>>>>>>> Alessio
>>>>>>>>>
>>>>>>>>> On 12/03/2012 05:56 PM, Andrei Shakirin wrote:
>>>>>>>>>> Hi Ivan,
>>>>>>>>>>
>>>>>>>>>> I can imagine that in some cases it makes sense to update all WSDL
>>>>>>>>> service endpoints, but I wouldn't configure it by default.
>>>>>>>>>> We can introduce additional context property
>>>>>>>>> "rewriteSoapAddressForAllServices" (like autoRewriteSoapAddress ,
>>>>>>>>> publishedEndpointUrl) and if it is activated, endpoint of all
>>>> relevant
>>>>>>>>> services will be updated. Default value will be false.
>>>>>>>>>> Logic located in WSDLGetUtils.updateDoc().
>>>>>>>>>>
>>>>>>>>>> Cheers,
>>>>>>>>>> Andrei.
>>>>>>>>>>
>>>>>>>>>>> -----Original Message-----
>>>>>>>>>>> From: Ivan [mailto:xhhsld@gmail.com]
>>>>>>>>>>> Sent: Sonntag, 2. Dezember 2012 16:08
>>>>>>>>>>> To: users@cxf.apache.org
>>>>>>>>>>> Subject: Re: service location in WSDL generated by CXF
>>>>>>>>>>>
>>>>>>>>>>> Well, I agree that, the accessing address for other ports may not
>>>>>>>>> correct
>>>>>>>>>>> in some scenarios. While thinking the common usage in the Java EE
>>>>>>>>>>> environment, we usually publish those endpoints in one web app,
>> and
>>>>>>>>>>> the target web app will be accessed in one host, which associated
>>>>>>>>>>> with web connectors. So, I am thinking that this is a good idea,
>>>>>>>>>>> and maybe a flag could be used to determine the behavior.
>>>>>>>>>>>
>>>>>>>>>>> I added the similar function in Apache Geronimo, and think that
>> it
>>>>>>>>>>> will
>>>>>>>>> be
>>>>>>>>>>> better that CXF could provide kind of native support for this.
>>>>>>>>>>> [1]
>>>>>>>>>>>
>>>> https://svn.apache.org/repos/asf/geronimo/server/branches/3.0/plugi
>>>>>>>>>>> ns/a
>>>>>>>>>>> xis2/geronimo-
>>>>>>>>>>>
>>>>>>>> axis2/src/main/java/org/apache/geronimo/axis2/WSDLQueryHandler.java
>>>>>>>>>>>
>>>>>>>>>>> Thoughts ?
>>>>>>>>>>>
>>>>>>>>>>> 2012/11/29 Andrei Shakirin <as...@talend.com>
>>>>>>>>>>>
>>>>>>>>>>>> Proposed update of all services endpoints can be in some cases
>>>>>>>>> incorrect.
>>>>>>>>>>>> The absolute endpoint URL can be determined only from incoming
>>>>>>>> request.
>>>>>>>>>>> As
>>>>>>>>>>>> far as you request InventoryService, not InventoryProvider; only
>>>>>>>>>>>> InventoryService endpoint is updated.
>>>>>>>>>>>> Imagine, you request InventoryProvider using other URL (for
>>>>>>>>>>>> example
>> http://127.0.0.1:9080/jaxws-wsdlfaults2/InventoryProvider
>>>> ,
>>>>>>>>>>>> or even
>>>>>>>>> using
>>>>>>>>>>>> other port) and InventoryProvider will have absolute URL
>> different
>>>>>>>>>>>> as InventoryService.
>>>>>>>>>>>>
>>>>>>>>>>>> Cheers,
>>>>>>>>>>>> Andrei.
>>>>>>>>>>>>
>>>>>>>>>>>>> -----Original Message-----
>>>>>>>>>>>>> From: Bin Zhu [mailto:luckyzhubin@gmail.com]
>>>>>>>>>>>>> Sent: Dienstag, 27. November 2012 07:30
>>>>>>>>>>>>> To: users@cxf.apache.org
>>>>>>>>>>>>> Subject: service location in WSDL generated by CXF
>>>>>>>>>>>>>
>>>>>>>>>>>>> Hi All,
>>>>>>>>>>>>> I find that when define 2 service using a SEI class and a
>> Service
>>>>>>>>>>>> provider class,
>>>>>>>>>>>>> if query the service defined by SEI, then in the WSDL generated
>>>>>>>>>>>>> by
>>>>>>>>> CXF,
>>>>>>>>>>>> it will
>>>>>>>>>>>>> only update the service location for this SEI service, but the
>>>>>>>>> location
>>>>>>>>>>>> defined
>>>>>>>>>>>>> by service provider will not be updated.
>>>>>>>>>>>>> Is this behavior as design? Could it update all the service
>>>>>>>>>>>>> location
>>>>>>>>>>>> rather than
>>>>>>>>>>>>> only the requested one? Thanks in advance.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Service defined by SEI:
>>>>>>>>>>>>>
>>>>>>>> @WebService(targetNamespace="http://inventory.wsdlfaults.jaxws",
>>>>>>>>>>>>>             wsdlLocation="WEB-INF/wsdl/Inventory.wsdl",
>>>>>>>>>>>>>             serviceName="InventoryService",
>>>>>>>>>>>>>             portName="InventoryPort",
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>
>>>> endpointInterface="jaxws.wsdlfaults.wsfvt.server.inventory.InventoryPo
>>>>>>>>> rtT
>>>>>>>>>>>>> ype")
>>>>>>>>>>>>> Service defined by Service Provider:
>>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>> @WebServiceProvider(targetNamespace="http://inventory.wsdlfaults.ja
>>>>>>>>>>> xw
>>>>>>>>>>>>> s",
>>>>>>>>>>>>>                     wsdlLocation="WEB-INF/wsdl/Inventory.wsdl",
>>>>>>>>>>>>>                     serviceName="InventoryProvider",
>>>>>>>>>>>>>                     portName="InventoryProviderPort")
>>>>>>>>>>>>>
>>>>>>>>>>>>> WSDL generated by CXF using this URL:
>>>>>>>>>>>>> http://localhost:9080/jaxws-wsdlfaults2/InventoryService?wsdl
>>>>>>>>>>>>>
>>>>>>>>>>>>> <service name="InventoryService"> <port
>>>>>>>>>>>>> binding="tns:InventoryBinding" name="InventoryPort">
>>>>>>>>>>>>> <soap:address location="
>>>>>>>>>>>>> http://localhost:9080/jaxws-wsdlfaults2/InventoryService
>>>>>>>>>>>> "></soap:address>
>>>>>>>>>>>>> </port>
>>>>>>>>>>>>> </service>
>>>>>>>>>>>>> <service name="InventoryProvider"> <port
>>>>>>>>>>>>> binding="tns:InventoryBinding" name="InventoryProviderPort">
>>>>>>>>>>>>> <soap:address location="/InventoryProvider"></soap:address>
>>>>>>>>>>>>> </port>
>>>>>>>>>>>>> </service>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Ivan
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Alessio Soldano
>>>>>>>>> Web Service Lead, JBoss
>>>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Alessio Soldano
>>>>>> Web Service Lead, JBoss
>>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Alessio Soldano
>>>> Web Service Lead, JBoss
>>>>
>>>
>>
>>
>> --
>> Alessio Soldano
>> Web Service Lead, JBoss
>>
> 


-- 
Alessio Soldano
Web Service Lead, JBoss

Re: service location in WSDL generated by CXF

Posted by Bin Zhu <lu...@gmail.com>.
Thanks Alessio :-)

2012/12/10 Alessio Soldano <as...@redhat.com>

> Hi Bin,
> just read your message (Friday was bank holiday here). I'll check your
> patch and improve my fix to cover your scenario too.
> Will create a new jira and link to the current one, as the release
> process for 2.7.1 has been started in the meantime.
> Cheers
> Alessio
>
> On 12/07/2012 09:28 AM, Bin Zhu wrote:
> > Hi Alessio,
> >
> > I've attached the patch here
> > https://issues.apache.org/jira/secure/attachment/12559830/CXF-4677.patch
> > Can you help review it? Thanks.
> >
> >
> > 2012/12/6 Alessio Soldano <as...@redhat.com>
> >
> >> Hi Bin,
> >> ok, either commit or attach an additional patch to CXF-4677 jira and let
> >> me review before the upcoming release ;-)
> >>
> >> Alessio
> >>
> >> On 12/06/2012 08:23 AM, Bin Zhu wrote:
> >>> Hi,
> >>>
> >>> Thanks for the quick response.  I've tried this patch but it doesn't
> >> update
> >>> all the soapaddress locations in my test.
> >>>
> >>> Looked into the code and find that reason is an Exception will be throw
> >> in
> >>> the following line in new added
> >> WSDLGetUtils.rewriteAddressProtocolHostPort
> >>> method:
> >>>  URL locUrl = new URL(location); // Exception will be thrown in this
> line
> >>> since the value of location is like"/InventoryService"
> >>>
> >>> It is suggested to get the  http base path by using " String basePath =
> >>> (String) message.get("http.base.path")" in rewriteAllSoapAddress logic,
> >>> then append it to the soapaddress location
> >>> in WSDLGetUtils.rewriteAddressProtocolHostPort method.
> >>>
> >>> I made the changes and it works in my local box. I would like to make
> >> this
> >>> fix if you don't mind. Thanks.
> >>>
> >>>
> >>>
> >>> 2012/12/5 Alessio Soldano <as...@redhat.com>
> >>>
> >>>> Hi,
> >>>> I've committed a patch for supporting
> >>>> 'autoRewriteSoapAddressForAllServices' option. The main difference
> with
> >>>> what the already existing 'autoRewriteSoapAddress' option did, is that
> >>>> when rewriting the other service/ports soap:address location
> attributes,
> >>>> the existing path component of the address is not changed, as that
> would
> >>>> not really make sense.
> >>>>
> >>>> The new option is an extension of the former one; so setting the new
> one
> >>>> to true implies also enable the former one (IOW the current
> service/port
> >>>> address is also fully rewritten).
> >>>>
> >>>> Cheers
> >>>> Alessio
> >>>>
> >>>> On 12/05/2012 11:51 AM, Andrei Shakirin wrote:
> >>>>> Issue https://issues.apache.org/jira/browse/CXF-4677 is created.
> >>>>> Would you like to deliver the patch yourself?
> >>>>>
> >>>>> Cheers,
> >>>>> Andrei.
> >>>>>
> >>>>>> -----Original Message-----
> >>>>>> From: Bin Zhu [mailto:luckyzhubin@gmail.com]
> >>>>>> Sent: Mittwoch, 5. Dezember 2012 07:24
> >>>>>> To: users@cxf.apache.org
> >>>>>> Subject: Re: service location in WSDL generated by CXF
> >>>>>>
> >>>>>> Many thanks to all of you about the suggestions.
> >>>>>>
> >>>>>> To Alessio,
> >>>>>> As we are working on migrating our application to CXF and these
> >>>> application
> >>>>>> needs this function to work, can you estimate when the fix could be
> >>>>>> delivered? It will be helpful for us to size and schedule the whole
> >>>> migration
> >>>>>> work. Thanks.
> >>>>>>
> >>>>>> 2012/12/4 Alessio Soldano <as...@redhat.com>
> >>>>>>
> >>>>>>> I agree with the need of such a functionality.
> >>>>>>> I'm likely going to work on this soon, will post the jira reference
> >>>> later.
> >>>>>>> Default behaviour can for sure stay as is, but I see scenarios
> >>>>>>> requiring a different configuration (e.g. all endpoints, belonging
> to
> >>>>>>> the same wsdl service, to be updated using the configured
> >> EndpointInfo
> >>>>>>> published url property before writing the wsdl definition and
> >>>>>>> returning it for the current query).
> >>>>>>>
> >>>>>>> Cheers
> >>>>>>> Alessio
> >>>>>>>
> >>>>>>> On 12/03/2012 05:56 PM, Andrei Shakirin wrote:
> >>>>>>>> Hi Ivan,
> >>>>>>>>
> >>>>>>>> I can imagine that in some cases it makes sense to update all WSDL
> >>>>>>> service endpoints, but I wouldn't configure it by default.
> >>>>>>>> We can introduce additional context property
> >>>>>>> "rewriteSoapAddressForAllServices" (like autoRewriteSoapAddress ,
> >>>>>>> publishedEndpointUrl) and if it is activated, endpoint of all
> >> relevant
> >>>>>>> services will be updated. Default value will be false.
> >>>>>>>> Logic located in WSDLGetUtils.updateDoc().
> >>>>>>>>
> >>>>>>>> Cheers,
> >>>>>>>> Andrei.
> >>>>>>>>
> >>>>>>>>> -----Original Message-----
> >>>>>>>>> From: Ivan [mailto:xhhsld@gmail.com]
> >>>>>>>>> Sent: Sonntag, 2. Dezember 2012 16:08
> >>>>>>>>> To: users@cxf.apache.org
> >>>>>>>>> Subject: Re: service location in WSDL generated by CXF
> >>>>>>>>>
> >>>>>>>>> Well, I agree that, the accessing address for other ports may not
> >>>>>>> correct
> >>>>>>>>> in some scenarios. While thinking the common usage in the Java EE
> >>>>>>>>> environment, we usually publish those endpoints in one web app,
> and
> >>>>>>>>> the target web app will be accessed in one host, which associated
> >>>>>>>>> with web connectors. So, I am thinking that this is a good idea,
> >>>>>>>>> and maybe a flag could be used to determine the behavior.
> >>>>>>>>>
> >>>>>>>>> I added the similar function in Apache Geronimo, and think that
> it
> >>>>>>>>> will
> >>>>>>> be
> >>>>>>>>> better that CXF could provide kind of native support for this.
> >>>>>>>>> [1]
> >>>>>>>>>
> >> https://svn.apache.org/repos/asf/geronimo/server/branches/3.0/plugi
> >>>>>>>>> ns/a
> >>>>>>>>> xis2/geronimo-
> >>>>>>>>>
> >>>>>> axis2/src/main/java/org/apache/geronimo/axis2/WSDLQueryHandler.java
> >>>>>>>>>
> >>>>>>>>> Thoughts ?
> >>>>>>>>>
> >>>>>>>>> 2012/11/29 Andrei Shakirin <as...@talend.com>
> >>>>>>>>>
> >>>>>>>>>> Proposed update of all services endpoints can be in some cases
> >>>>>>> incorrect.
> >>>>>>>>>> The absolute endpoint URL can be determined only from incoming
> >>>>>> request.
> >>>>>>>>> As
> >>>>>>>>>> far as you request InventoryService, not InventoryProvider; only
> >>>>>>>>>> InventoryService endpoint is updated.
> >>>>>>>>>> Imagine, you request InventoryProvider using other URL (for
> >>>>>>>>>> example
> http://127.0.0.1:9080/jaxws-wsdlfaults2/InventoryProvider
> >> ,
> >>>>>>>>>> or even
> >>>>>>> using
> >>>>>>>>>> other port) and InventoryProvider will have absolute URL
> different
> >>>>>>>>>> as InventoryService.
> >>>>>>>>>>
> >>>>>>>>>> Cheers,
> >>>>>>>>>> Andrei.
> >>>>>>>>>>
> >>>>>>>>>>> -----Original Message-----
> >>>>>>>>>>> From: Bin Zhu [mailto:luckyzhubin@gmail.com]
> >>>>>>>>>>> Sent: Dienstag, 27. November 2012 07:30
> >>>>>>>>>>> To: users@cxf.apache.org
> >>>>>>>>>>> Subject: service location in WSDL generated by CXF
> >>>>>>>>>>>
> >>>>>>>>>>> Hi All,
> >>>>>>>>>>> I find that when define 2 service using a SEI class and a
> Service
> >>>>>>>>>> provider class,
> >>>>>>>>>>> if query the service defined by SEI, then in the WSDL generated
> >>>>>>>>>>> by
> >>>>>>> CXF,
> >>>>>>>>>> it will
> >>>>>>>>>>> only update the service location for this SEI service, but the
> >>>>>>> location
> >>>>>>>>>> defined
> >>>>>>>>>>> by service provider will not be updated.
> >>>>>>>>>>> Is this behavior as design? Could it update all the service
> >>>>>>>>>>> location
> >>>>>>>>>> rather than
> >>>>>>>>>>> only the requested one? Thanks in advance.
> >>>>>>>>>>>
> >>>>>>>>>>> Service defined by SEI:
> >>>>>>>>>>>
> >>>>>> @WebService(targetNamespace="http://inventory.wsdlfaults.jaxws",
> >>>>>>>>>>>             wsdlLocation="WEB-INF/wsdl/Inventory.wsdl",
> >>>>>>>>>>>             serviceName="InventoryService",
> >>>>>>>>>>>             portName="InventoryPort",
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>
> >>>>>>>
> >> endpointInterface="jaxws.wsdlfaults.wsfvt.server.inventory.InventoryPo
> >>>>>>> rtT
> >>>>>>>>>>> ype")
> >>>>>>>>>>> Service defined by Service Provider:
> >>>>>>>>>>>
> >>>>>>>>>
> >>>>>> @WebServiceProvider(targetNamespace="http://inventory.wsdlfaults.ja
> >>>>>>>>> xw
> >>>>>>>>>>> s",
> >>>>>>>>>>>                     wsdlLocation="WEB-INF/wsdl/Inventory.wsdl",
> >>>>>>>>>>>                     serviceName="InventoryProvider",
> >>>>>>>>>>>                     portName="InventoryProviderPort")
> >>>>>>>>>>>
> >>>>>>>>>>> WSDL generated by CXF using this URL:
> >>>>>>>>>>> http://localhost:9080/jaxws-wsdlfaults2/InventoryService?wsdl
> >>>>>>>>>>>
> >>>>>>>>>>> <service name="InventoryService"> <port
> >>>>>>>>>>> binding="tns:InventoryBinding" name="InventoryPort">
> >>>>>>>>>>> <soap:address location="
> >>>>>>>>>>> http://localhost:9080/jaxws-wsdlfaults2/InventoryService
> >>>>>>>>>> "></soap:address>
> >>>>>>>>>>> </port>
> >>>>>>>>>>> </service>
> >>>>>>>>>>> <service name="InventoryProvider"> <port
> >>>>>>>>>>> binding="tns:InventoryBinding" name="InventoryProviderPort">
> >>>>>>>>>>> <soap:address location="/InventoryProvider"></soap:address>
> >>>>>>>>>>> </port>
> >>>>>>>>>>> </service>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> --
> >>>>>>>>> Ivan
> >>>>>>>
> >>>>>>>
> >>>>>>> --
> >>>>>>> Alessio Soldano
> >>>>>>> Web Service Lead, JBoss
> >>>>>>>
> >>>>
> >>>>
> >>>> --
> >>>> Alessio Soldano
> >>>> Web Service Lead, JBoss
> >>>>
> >>>
> >>
> >>
> >> --
> >> Alessio Soldano
> >> Web Service Lead, JBoss
> >>
> >
>
>
> --
> Alessio Soldano
> Web Service Lead, JBoss
>

Re: service location in WSDL generated by CXF

Posted by Alessio Soldano <as...@redhat.com>.
Hi Bin,
just read your message (Friday was bank holiday here). I'll check your
patch and improve my fix to cover your scenario too.
Will create a new jira and link to the current one, as the release
process for 2.7.1 has been started in the meantime.
Cheers
Alessio

On 12/07/2012 09:28 AM, Bin Zhu wrote:
> Hi Alessio,
> 
> I've attached the patch here
> https://issues.apache.org/jira/secure/attachment/12559830/CXF-4677.patch
> Can you help review it? Thanks.
> 
> 
> 2012/12/6 Alessio Soldano <as...@redhat.com>
> 
>> Hi Bin,
>> ok, either commit or attach an additional patch to CXF-4677 jira and let
>> me review before the upcoming release ;-)
>>
>> Alessio
>>
>> On 12/06/2012 08:23 AM, Bin Zhu wrote:
>>> Hi,
>>>
>>> Thanks for the quick response.  I've tried this patch but it doesn't
>> update
>>> all the soapaddress locations in my test.
>>>
>>> Looked into the code and find that reason is an Exception will be throw
>> in
>>> the following line in new added
>> WSDLGetUtils.rewriteAddressProtocolHostPort
>>> method:
>>>  URL locUrl = new URL(location); // Exception will be thrown in this line
>>> since the value of location is like"/InventoryService"
>>>
>>> It is suggested to get the  http base path by using " String basePath =
>>> (String) message.get("http.base.path")" in rewriteAllSoapAddress logic,
>>> then append it to the soapaddress location
>>> in WSDLGetUtils.rewriteAddressProtocolHostPort method.
>>>
>>> I made the changes and it works in my local box. I would like to make
>> this
>>> fix if you don't mind. Thanks.
>>>
>>>
>>>
>>> 2012/12/5 Alessio Soldano <as...@redhat.com>
>>>
>>>> Hi,
>>>> I've committed a patch for supporting
>>>> 'autoRewriteSoapAddressForAllServices' option. The main difference with
>>>> what the already existing 'autoRewriteSoapAddress' option did, is that
>>>> when rewriting the other service/ports soap:address location attributes,
>>>> the existing path component of the address is not changed, as that would
>>>> not really make sense.
>>>>
>>>> The new option is an extension of the former one; so setting the new one
>>>> to true implies also enable the former one (IOW the current service/port
>>>> address is also fully rewritten).
>>>>
>>>> Cheers
>>>> Alessio
>>>>
>>>> On 12/05/2012 11:51 AM, Andrei Shakirin wrote:
>>>>> Issue https://issues.apache.org/jira/browse/CXF-4677 is created.
>>>>> Would you like to deliver the patch yourself?
>>>>>
>>>>> Cheers,
>>>>> Andrei.
>>>>>
>>>>>> -----Original Message-----
>>>>>> From: Bin Zhu [mailto:luckyzhubin@gmail.com]
>>>>>> Sent: Mittwoch, 5. Dezember 2012 07:24
>>>>>> To: users@cxf.apache.org
>>>>>> Subject: Re: service location in WSDL generated by CXF
>>>>>>
>>>>>> Many thanks to all of you about the suggestions.
>>>>>>
>>>>>> To Alessio,
>>>>>> As we are working on migrating our application to CXF and these
>>>> application
>>>>>> needs this function to work, can you estimate when the fix could be
>>>>>> delivered? It will be helpful for us to size and schedule the whole
>>>> migration
>>>>>> work. Thanks.
>>>>>>
>>>>>> 2012/12/4 Alessio Soldano <as...@redhat.com>
>>>>>>
>>>>>>> I agree with the need of such a functionality.
>>>>>>> I'm likely going to work on this soon, will post the jira reference
>>>> later.
>>>>>>> Default behaviour can for sure stay as is, but I see scenarios
>>>>>>> requiring a different configuration (e.g. all endpoints, belonging to
>>>>>>> the same wsdl service, to be updated using the configured
>> EndpointInfo
>>>>>>> published url property before writing the wsdl definition and
>>>>>>> returning it for the current query).
>>>>>>>
>>>>>>> Cheers
>>>>>>> Alessio
>>>>>>>
>>>>>>> On 12/03/2012 05:56 PM, Andrei Shakirin wrote:
>>>>>>>> Hi Ivan,
>>>>>>>>
>>>>>>>> I can imagine that in some cases it makes sense to update all WSDL
>>>>>>> service endpoints, but I wouldn't configure it by default.
>>>>>>>> We can introduce additional context property
>>>>>>> "rewriteSoapAddressForAllServices" (like autoRewriteSoapAddress ,
>>>>>>> publishedEndpointUrl) and if it is activated, endpoint of all
>> relevant
>>>>>>> services will be updated. Default value will be false.
>>>>>>>> Logic located in WSDLGetUtils.updateDoc().
>>>>>>>>
>>>>>>>> Cheers,
>>>>>>>> Andrei.
>>>>>>>>
>>>>>>>>> -----Original Message-----
>>>>>>>>> From: Ivan [mailto:xhhsld@gmail.com]
>>>>>>>>> Sent: Sonntag, 2. Dezember 2012 16:08
>>>>>>>>> To: users@cxf.apache.org
>>>>>>>>> Subject: Re: service location in WSDL generated by CXF
>>>>>>>>>
>>>>>>>>> Well, I agree that, the accessing address for other ports may not
>>>>>>> correct
>>>>>>>>> in some scenarios. While thinking the common usage in the Java EE
>>>>>>>>> environment, we usually publish those endpoints in one web app, and
>>>>>>>>> the target web app will be accessed in one host, which associated
>>>>>>>>> with web connectors. So, I am thinking that this is a good idea,
>>>>>>>>> and maybe a flag could be used to determine the behavior.
>>>>>>>>>
>>>>>>>>> I added the similar function in Apache Geronimo, and think that it
>>>>>>>>> will
>>>>>>> be
>>>>>>>>> better that CXF could provide kind of native support for this.
>>>>>>>>> [1]
>>>>>>>>>
>> https://svn.apache.org/repos/asf/geronimo/server/branches/3.0/plugi
>>>>>>>>> ns/a
>>>>>>>>> xis2/geronimo-
>>>>>>>>>
>>>>>> axis2/src/main/java/org/apache/geronimo/axis2/WSDLQueryHandler.java
>>>>>>>>>
>>>>>>>>> Thoughts ?
>>>>>>>>>
>>>>>>>>> 2012/11/29 Andrei Shakirin <as...@talend.com>
>>>>>>>>>
>>>>>>>>>> Proposed update of all services endpoints can be in some cases
>>>>>>> incorrect.
>>>>>>>>>> The absolute endpoint URL can be determined only from incoming
>>>>>> request.
>>>>>>>>> As
>>>>>>>>>> far as you request InventoryService, not InventoryProvider; only
>>>>>>>>>> InventoryService endpoint is updated.
>>>>>>>>>> Imagine, you request InventoryProvider using other URL (for
>>>>>>>>>> example http://127.0.0.1:9080/jaxws-wsdlfaults2/InventoryProvider
>> ,
>>>>>>>>>> or even
>>>>>>> using
>>>>>>>>>> other port) and InventoryProvider will have absolute URL different
>>>>>>>>>> as InventoryService.
>>>>>>>>>>
>>>>>>>>>> Cheers,
>>>>>>>>>> Andrei.
>>>>>>>>>>
>>>>>>>>>>> -----Original Message-----
>>>>>>>>>>> From: Bin Zhu [mailto:luckyzhubin@gmail.com]
>>>>>>>>>>> Sent: Dienstag, 27. November 2012 07:30
>>>>>>>>>>> To: users@cxf.apache.org
>>>>>>>>>>> Subject: service location in WSDL generated by CXF
>>>>>>>>>>>
>>>>>>>>>>> Hi All,
>>>>>>>>>>> I find that when define 2 service using a SEI class and a Service
>>>>>>>>>> provider class,
>>>>>>>>>>> if query the service defined by SEI, then in the WSDL generated
>>>>>>>>>>> by
>>>>>>> CXF,
>>>>>>>>>> it will
>>>>>>>>>>> only update the service location for this SEI service, but the
>>>>>>> location
>>>>>>>>>> defined
>>>>>>>>>>> by service provider will not be updated.
>>>>>>>>>>> Is this behavior as design? Could it update all the service
>>>>>>>>>>> location
>>>>>>>>>> rather than
>>>>>>>>>>> only the requested one? Thanks in advance.
>>>>>>>>>>>
>>>>>>>>>>> Service defined by SEI:
>>>>>>>>>>>
>>>>>> @WebService(targetNamespace="http://inventory.wsdlfaults.jaxws",
>>>>>>>>>>>             wsdlLocation="WEB-INF/wsdl/Inventory.wsdl",
>>>>>>>>>>>             serviceName="InventoryService",
>>>>>>>>>>>             portName="InventoryPort",
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>
>>>>>>>
>> endpointInterface="jaxws.wsdlfaults.wsfvt.server.inventory.InventoryPo
>>>>>>> rtT
>>>>>>>>>>> ype")
>>>>>>>>>>> Service defined by Service Provider:
>>>>>>>>>>>
>>>>>>>>>
>>>>>> @WebServiceProvider(targetNamespace="http://inventory.wsdlfaults.ja
>>>>>>>>> xw
>>>>>>>>>>> s",
>>>>>>>>>>>                     wsdlLocation="WEB-INF/wsdl/Inventory.wsdl",
>>>>>>>>>>>                     serviceName="InventoryProvider",
>>>>>>>>>>>                     portName="InventoryProviderPort")
>>>>>>>>>>>
>>>>>>>>>>> WSDL generated by CXF using this URL:
>>>>>>>>>>> http://localhost:9080/jaxws-wsdlfaults2/InventoryService?wsdl
>>>>>>>>>>>
>>>>>>>>>>> <service name="InventoryService"> <port
>>>>>>>>>>> binding="tns:InventoryBinding" name="InventoryPort">
>>>>>>>>>>> <soap:address location="
>>>>>>>>>>> http://localhost:9080/jaxws-wsdlfaults2/InventoryService
>>>>>>>>>> "></soap:address>
>>>>>>>>>>> </port>
>>>>>>>>>>> </service>
>>>>>>>>>>> <service name="InventoryProvider"> <port
>>>>>>>>>>> binding="tns:InventoryBinding" name="InventoryProviderPort">
>>>>>>>>>>> <soap:address location="/InventoryProvider"></soap:address>
>>>>>>>>>>> </port>
>>>>>>>>>>> </service>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Ivan
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Alessio Soldano
>>>>>>> Web Service Lead, JBoss
>>>>>>>
>>>>
>>>>
>>>> --
>>>> Alessio Soldano
>>>> Web Service Lead, JBoss
>>>>
>>>
>>
>>
>> --
>> Alessio Soldano
>> Web Service Lead, JBoss
>>
> 


-- 
Alessio Soldano
Web Service Lead, JBoss

Re: service location in WSDL generated by CXF

Posted by Bin Zhu <lu...@gmail.com>.
Hi Alessio,

I've attached the patch here
https://issues.apache.org/jira/secure/attachment/12559830/CXF-4677.patch
Can you help review it? Thanks.


2012/12/6 Alessio Soldano <as...@redhat.com>

> Hi Bin,
> ok, either commit or attach an additional patch to CXF-4677 jira and let
> me review before the upcoming release ;-)
>
> Alessio
>
> On 12/06/2012 08:23 AM, Bin Zhu wrote:
> > Hi,
> >
> > Thanks for the quick response.  I've tried this patch but it doesn't
> update
> > all the soapaddress locations in my test.
> >
> > Looked into the code and find that reason is an Exception will be throw
> in
> > the following line in new added
> WSDLGetUtils.rewriteAddressProtocolHostPort
> > method:
> >  URL locUrl = new URL(location); // Exception will be thrown in this line
> > since the value of location is like"/InventoryService"
> >
> > It is suggested to get the  http base path by using " String basePath =
> > (String) message.get("http.base.path")" in rewriteAllSoapAddress logic,
> > then append it to the soapaddress location
> > in WSDLGetUtils.rewriteAddressProtocolHostPort method.
> >
> > I made the changes and it works in my local box. I would like to make
> this
> > fix if you don't mind. Thanks.
> >
> >
> >
> > 2012/12/5 Alessio Soldano <as...@redhat.com>
> >
> >> Hi,
> >> I've committed a patch for supporting
> >> 'autoRewriteSoapAddressForAllServices' option. The main difference with
> >> what the already existing 'autoRewriteSoapAddress' option did, is that
> >> when rewriting the other service/ports soap:address location attributes,
> >> the existing path component of the address is not changed, as that would
> >> not really make sense.
> >>
> >> The new option is an extension of the former one; so setting the new one
> >> to true implies also enable the former one (IOW the current service/port
> >> address is also fully rewritten).
> >>
> >> Cheers
> >> Alessio
> >>
> >> On 12/05/2012 11:51 AM, Andrei Shakirin wrote:
> >>> Issue https://issues.apache.org/jira/browse/CXF-4677 is created.
> >>> Would you like to deliver the patch yourself?
> >>>
> >>> Cheers,
> >>> Andrei.
> >>>
> >>>> -----Original Message-----
> >>>> From: Bin Zhu [mailto:luckyzhubin@gmail.com]
> >>>> Sent: Mittwoch, 5. Dezember 2012 07:24
> >>>> To: users@cxf.apache.org
> >>>> Subject: Re: service location in WSDL generated by CXF
> >>>>
> >>>> Many thanks to all of you about the suggestions.
> >>>>
> >>>> To Alessio,
> >>>> As we are working on migrating our application to CXF and these
> >> application
> >>>> needs this function to work, can you estimate when the fix could be
> >>>> delivered? It will be helpful for us to size and schedule the whole
> >> migration
> >>>> work. Thanks.
> >>>>
> >>>> 2012/12/4 Alessio Soldano <as...@redhat.com>
> >>>>
> >>>>> I agree with the need of such a functionality.
> >>>>> I'm likely going to work on this soon, will post the jira reference
> >> later.
> >>>>> Default behaviour can for sure stay as is, but I see scenarios
> >>>>> requiring a different configuration (e.g. all endpoints, belonging to
> >>>>> the same wsdl service, to be updated using the configured
> EndpointInfo
> >>>>> published url property before writing the wsdl definition and
> >>>>> returning it for the current query).
> >>>>>
> >>>>> Cheers
> >>>>> Alessio
> >>>>>
> >>>>> On 12/03/2012 05:56 PM, Andrei Shakirin wrote:
> >>>>>> Hi Ivan,
> >>>>>>
> >>>>>> I can imagine that in some cases it makes sense to update all WSDL
> >>>>> service endpoints, but I wouldn't configure it by default.
> >>>>>> We can introduce additional context property
> >>>>> "rewriteSoapAddressForAllServices" (like autoRewriteSoapAddress ,
> >>>>> publishedEndpointUrl) and if it is activated, endpoint of all
> relevant
> >>>>> services will be updated. Default value will be false.
> >>>>>> Logic located in WSDLGetUtils.updateDoc().
> >>>>>>
> >>>>>> Cheers,
> >>>>>> Andrei.
> >>>>>>
> >>>>>>> -----Original Message-----
> >>>>>>> From: Ivan [mailto:xhhsld@gmail.com]
> >>>>>>> Sent: Sonntag, 2. Dezember 2012 16:08
> >>>>>>> To: users@cxf.apache.org
> >>>>>>> Subject: Re: service location in WSDL generated by CXF
> >>>>>>>
> >>>>>>> Well, I agree that, the accessing address for other ports may not
> >>>>> correct
> >>>>>>> in some scenarios. While thinking the common usage in the Java EE
> >>>>>>> environment, we usually publish those endpoints in one web app, and
> >>>>>>> the target web app will be accessed in one host, which associated
> >>>>>>> with web connectors. So, I am thinking that this is a good idea,
> >>>>>>> and maybe a flag could be used to determine the behavior.
> >>>>>>>
> >>>>>>> I added the similar function in Apache Geronimo, and think that it
> >>>>>>> will
> >>>>> be
> >>>>>>> better that CXF could provide kind of native support for this.
> >>>>>>> [1]
> >>>>>>>
> https://svn.apache.org/repos/asf/geronimo/server/branches/3.0/plugi
> >>>>>>> ns/a
> >>>>>>> xis2/geronimo-
> >>>>>>>
> >>>> axis2/src/main/java/org/apache/geronimo/axis2/WSDLQueryHandler.java
> >>>>>>>
> >>>>>>> Thoughts ?
> >>>>>>>
> >>>>>>> 2012/11/29 Andrei Shakirin <as...@talend.com>
> >>>>>>>
> >>>>>>>> Proposed update of all services endpoints can be in some cases
> >>>>> incorrect.
> >>>>>>>> The absolute endpoint URL can be determined only from incoming
> >>>> request.
> >>>>>>> As
> >>>>>>>> far as you request InventoryService, not InventoryProvider; only
> >>>>>>>> InventoryService endpoint is updated.
> >>>>>>>> Imagine, you request InventoryProvider using other URL (for
> >>>>>>>> example http://127.0.0.1:9080/jaxws-wsdlfaults2/InventoryProvider
> ,
> >>>>>>>> or even
> >>>>> using
> >>>>>>>> other port) and InventoryProvider will have absolute URL different
> >>>>>>>> as InventoryService.
> >>>>>>>>
> >>>>>>>> Cheers,
> >>>>>>>> Andrei.
> >>>>>>>>
> >>>>>>>>> -----Original Message-----
> >>>>>>>>> From: Bin Zhu [mailto:luckyzhubin@gmail.com]
> >>>>>>>>> Sent: Dienstag, 27. November 2012 07:30
> >>>>>>>>> To: users@cxf.apache.org
> >>>>>>>>> Subject: service location in WSDL generated by CXF
> >>>>>>>>>
> >>>>>>>>> Hi All,
> >>>>>>>>> I find that when define 2 service using a SEI class and a Service
> >>>>>>>> provider class,
> >>>>>>>>> if query the service defined by SEI, then in the WSDL generated
> >>>>>>>>> by
> >>>>> CXF,
> >>>>>>>> it will
> >>>>>>>>> only update the service location for this SEI service, but the
> >>>>> location
> >>>>>>>> defined
> >>>>>>>>> by service provider will not be updated.
> >>>>>>>>> Is this behavior as design? Could it update all the service
> >>>>>>>>> location
> >>>>>>>> rather than
> >>>>>>>>> only the requested one? Thanks in advance.
> >>>>>>>>>
> >>>>>>>>> Service defined by SEI:
> >>>>>>>>>
> >>>> @WebService(targetNamespace="http://inventory.wsdlfaults.jaxws",
> >>>>>>>>>             wsdlLocation="WEB-INF/wsdl/Inventory.wsdl",
> >>>>>>>>>             serviceName="InventoryService",
> >>>>>>>>>             portName="InventoryPort",
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>
> >>>>>
> endpointInterface="jaxws.wsdlfaults.wsfvt.server.inventory.InventoryPo
> >>>>> rtT
> >>>>>>>>> ype")
> >>>>>>>>> Service defined by Service Provider:
> >>>>>>>>>
> >>>>>>>
> >>>> @WebServiceProvider(targetNamespace="http://inventory.wsdlfaults.ja
> >>>>>>> xw
> >>>>>>>>> s",
> >>>>>>>>>                     wsdlLocation="WEB-INF/wsdl/Inventory.wsdl",
> >>>>>>>>>                     serviceName="InventoryProvider",
> >>>>>>>>>                     portName="InventoryProviderPort")
> >>>>>>>>>
> >>>>>>>>> WSDL generated by CXF using this URL:
> >>>>>>>>> http://localhost:9080/jaxws-wsdlfaults2/InventoryService?wsdl
> >>>>>>>>>
> >>>>>>>>> <service name="InventoryService"> <port
> >>>>>>>>> binding="tns:InventoryBinding" name="InventoryPort">
> >>>>>>>>> <soap:address location="
> >>>>>>>>> http://localhost:9080/jaxws-wsdlfaults2/InventoryService
> >>>>>>>> "></soap:address>
> >>>>>>>>> </port>
> >>>>>>>>> </service>
> >>>>>>>>> <service name="InventoryProvider"> <port
> >>>>>>>>> binding="tns:InventoryBinding" name="InventoryProviderPort">
> >>>>>>>>> <soap:address location="/InventoryProvider"></soap:address>
> >>>>>>>>> </port>
> >>>>>>>>> </service>
> >>>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> --
> >>>>>>> Ivan
> >>>>>
> >>>>>
> >>>>> --
> >>>>> Alessio Soldano
> >>>>> Web Service Lead, JBoss
> >>>>>
> >>
> >>
> >> --
> >> Alessio Soldano
> >> Web Service Lead, JBoss
> >>
> >
>
>
> --
> Alessio Soldano
> Web Service Lead, JBoss
>

Re: service location in WSDL generated by CXF

Posted by Alessio Soldano <as...@redhat.com>.
Hi Bin,
ok, either commit or attach an additional patch to CXF-4677 jira and let
me review before the upcoming release ;-)

Alessio

On 12/06/2012 08:23 AM, Bin Zhu wrote:
> Hi,
> 
> Thanks for the quick response.  I've tried this patch but it doesn't update
> all the soapaddress locations in my test.
> 
> Looked into the code and find that reason is an Exception will be throw in
> the following line in new added WSDLGetUtils.rewriteAddressProtocolHostPort
> method:
>  URL locUrl = new URL(location); // Exception will be thrown in this line
> since the value of location is like"/InventoryService"
> 
> It is suggested to get the  http base path by using " String basePath =
> (String) message.get("http.base.path")" in rewriteAllSoapAddress logic,
> then append it to the soapaddress location
> in WSDLGetUtils.rewriteAddressProtocolHostPort method.
> 
> I made the changes and it works in my local box. I would like to make this
> fix if you don't mind. Thanks.
> 
> 
> 
> 2012/12/5 Alessio Soldano <as...@redhat.com>
> 
>> Hi,
>> I've committed a patch for supporting
>> 'autoRewriteSoapAddressForAllServices' option. The main difference with
>> what the already existing 'autoRewriteSoapAddress' option did, is that
>> when rewriting the other service/ports soap:address location attributes,
>> the existing path component of the address is not changed, as that would
>> not really make sense.
>>
>> The new option is an extension of the former one; so setting the new one
>> to true implies also enable the former one (IOW the current service/port
>> address is also fully rewritten).
>>
>> Cheers
>> Alessio
>>
>> On 12/05/2012 11:51 AM, Andrei Shakirin wrote:
>>> Issue https://issues.apache.org/jira/browse/CXF-4677 is created.
>>> Would you like to deliver the patch yourself?
>>>
>>> Cheers,
>>> Andrei.
>>>
>>>> -----Original Message-----
>>>> From: Bin Zhu [mailto:luckyzhubin@gmail.com]
>>>> Sent: Mittwoch, 5. Dezember 2012 07:24
>>>> To: users@cxf.apache.org
>>>> Subject: Re: service location in WSDL generated by CXF
>>>>
>>>> Many thanks to all of you about the suggestions.
>>>>
>>>> To Alessio,
>>>> As we are working on migrating our application to CXF and these
>> application
>>>> needs this function to work, can you estimate when the fix could be
>>>> delivered? It will be helpful for us to size and schedule the whole
>> migration
>>>> work. Thanks.
>>>>
>>>> 2012/12/4 Alessio Soldano <as...@redhat.com>
>>>>
>>>>> I agree with the need of such a functionality.
>>>>> I'm likely going to work on this soon, will post the jira reference
>> later.
>>>>> Default behaviour can for sure stay as is, but I see scenarios
>>>>> requiring a different configuration (e.g. all endpoints, belonging to
>>>>> the same wsdl service, to be updated using the configured EndpointInfo
>>>>> published url property before writing the wsdl definition and
>>>>> returning it for the current query).
>>>>>
>>>>> Cheers
>>>>> Alessio
>>>>>
>>>>> On 12/03/2012 05:56 PM, Andrei Shakirin wrote:
>>>>>> Hi Ivan,
>>>>>>
>>>>>> I can imagine that in some cases it makes sense to update all WSDL
>>>>> service endpoints, but I wouldn't configure it by default.
>>>>>> We can introduce additional context property
>>>>> "rewriteSoapAddressForAllServices" (like autoRewriteSoapAddress ,
>>>>> publishedEndpointUrl) and if it is activated, endpoint of all relevant
>>>>> services will be updated. Default value will be false.
>>>>>> Logic located in WSDLGetUtils.updateDoc().
>>>>>>
>>>>>> Cheers,
>>>>>> Andrei.
>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> From: Ivan [mailto:xhhsld@gmail.com]
>>>>>>> Sent: Sonntag, 2. Dezember 2012 16:08
>>>>>>> To: users@cxf.apache.org
>>>>>>> Subject: Re: service location in WSDL generated by CXF
>>>>>>>
>>>>>>> Well, I agree that, the accessing address for other ports may not
>>>>> correct
>>>>>>> in some scenarios. While thinking the common usage in the Java EE
>>>>>>> environment, we usually publish those endpoints in one web app, and
>>>>>>> the target web app will be accessed in one host, which associated
>>>>>>> with web connectors. So, I am thinking that this is a good idea,
>>>>>>> and maybe a flag could be used to determine the behavior.
>>>>>>>
>>>>>>> I added the similar function in Apache Geronimo, and think that it
>>>>>>> will
>>>>> be
>>>>>>> better that CXF could provide kind of native support for this.
>>>>>>> [1]
>>>>>>> https://svn.apache.org/repos/asf/geronimo/server/branches/3.0/plugi
>>>>>>> ns/a
>>>>>>> xis2/geronimo-
>>>>>>>
>>>> axis2/src/main/java/org/apache/geronimo/axis2/WSDLQueryHandler.java
>>>>>>>
>>>>>>> Thoughts ?
>>>>>>>
>>>>>>> 2012/11/29 Andrei Shakirin <as...@talend.com>
>>>>>>>
>>>>>>>> Proposed update of all services endpoints can be in some cases
>>>>> incorrect.
>>>>>>>> The absolute endpoint URL can be determined only from incoming
>>>> request.
>>>>>>> As
>>>>>>>> far as you request InventoryService, not InventoryProvider; only
>>>>>>>> InventoryService endpoint is updated.
>>>>>>>> Imagine, you request InventoryProvider using other URL (for
>>>>>>>> example http://127.0.0.1:9080/jaxws-wsdlfaults2/InventoryProvider,
>>>>>>>> or even
>>>>> using
>>>>>>>> other port) and InventoryProvider will have absolute URL different
>>>>>>>> as InventoryService.
>>>>>>>>
>>>>>>>> Cheers,
>>>>>>>> Andrei.
>>>>>>>>
>>>>>>>>> -----Original Message-----
>>>>>>>>> From: Bin Zhu [mailto:luckyzhubin@gmail.com]
>>>>>>>>> Sent: Dienstag, 27. November 2012 07:30
>>>>>>>>> To: users@cxf.apache.org
>>>>>>>>> Subject: service location in WSDL generated by CXF
>>>>>>>>>
>>>>>>>>> Hi All,
>>>>>>>>> I find that when define 2 service using a SEI class and a Service
>>>>>>>> provider class,
>>>>>>>>> if query the service defined by SEI, then in the WSDL generated
>>>>>>>>> by
>>>>> CXF,
>>>>>>>> it will
>>>>>>>>> only update the service location for this SEI service, but the
>>>>> location
>>>>>>>> defined
>>>>>>>>> by service provider will not be updated.
>>>>>>>>> Is this behavior as design? Could it update all the service
>>>>>>>>> location
>>>>>>>> rather than
>>>>>>>>> only the requested one? Thanks in advance.
>>>>>>>>>
>>>>>>>>> Service defined by SEI:
>>>>>>>>>
>>>> @WebService(targetNamespace="http://inventory.wsdlfaults.jaxws",
>>>>>>>>>             wsdlLocation="WEB-INF/wsdl/Inventory.wsdl",
>>>>>>>>>             serviceName="InventoryService",
>>>>>>>>>             portName="InventoryPort",
>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>> endpointInterface="jaxws.wsdlfaults.wsfvt.server.inventory.InventoryPo
>>>>> rtT
>>>>>>>>> ype")
>>>>>>>>> Service defined by Service Provider:
>>>>>>>>>
>>>>>>>
>>>> @WebServiceProvider(targetNamespace="http://inventory.wsdlfaults.ja
>>>>>>> xw
>>>>>>>>> s",
>>>>>>>>>                     wsdlLocation="WEB-INF/wsdl/Inventory.wsdl",
>>>>>>>>>                     serviceName="InventoryProvider",
>>>>>>>>>                     portName="InventoryProviderPort")
>>>>>>>>>
>>>>>>>>> WSDL generated by CXF using this URL:
>>>>>>>>> http://localhost:9080/jaxws-wsdlfaults2/InventoryService?wsdl
>>>>>>>>>
>>>>>>>>> <service name="InventoryService"> <port
>>>>>>>>> binding="tns:InventoryBinding" name="InventoryPort">
>>>>>>>>> <soap:address location="
>>>>>>>>> http://localhost:9080/jaxws-wsdlfaults2/InventoryService
>>>>>>>> "></soap:address>
>>>>>>>>> </port>
>>>>>>>>> </service>
>>>>>>>>> <service name="InventoryProvider"> <port
>>>>>>>>> binding="tns:InventoryBinding" name="InventoryProviderPort">
>>>>>>>>> <soap:address location="/InventoryProvider"></soap:address>
>>>>>>>>> </port>
>>>>>>>>> </service>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Ivan
>>>>>
>>>>>
>>>>> --
>>>>> Alessio Soldano
>>>>> Web Service Lead, JBoss
>>>>>
>>
>>
>> --
>> Alessio Soldano
>> Web Service Lead, JBoss
>>
> 


-- 
Alessio Soldano
Web Service Lead, JBoss

Re: service location in WSDL generated by CXF

Posted by Bin Zhu <lu...@gmail.com>.
Hi,

Thanks for the quick response.  I've tried this patch but it doesn't update
all the soapaddress locations in my test.

Looked into the code and find that reason is an Exception will be throw in
the following line in new added WSDLGetUtils.rewriteAddressProtocolHostPort
method:
 URL locUrl = new URL(location); // Exception will be thrown in this line
since the value of location is like"/InventoryService"

It is suggested to get the  http base path by using " String basePath =
(String) message.get("http.base.path")" in rewriteAllSoapAddress logic,
then append it to the soapaddress location
in WSDLGetUtils.rewriteAddressProtocolHostPort method.

I made the changes and it works in my local box. I would like to make this
fix if you don't mind. Thanks.



2012/12/5 Alessio Soldano <as...@redhat.com>

> Hi,
> I've committed a patch for supporting
> 'autoRewriteSoapAddressForAllServices' option. The main difference with
> what the already existing 'autoRewriteSoapAddress' option did, is that
> when rewriting the other service/ports soap:address location attributes,
> the existing path component of the address is not changed, as that would
> not really make sense.
>
> The new option is an extension of the former one; so setting the new one
> to true implies also enable the former one (IOW the current service/port
> address is also fully rewritten).
>
> Cheers
> Alessio
>
> On 12/05/2012 11:51 AM, Andrei Shakirin wrote:
> > Issue https://issues.apache.org/jira/browse/CXF-4677 is created.
> > Would you like to deliver the patch yourself?
> >
> > Cheers,
> > Andrei.
> >
> >> -----Original Message-----
> >> From: Bin Zhu [mailto:luckyzhubin@gmail.com]
> >> Sent: Mittwoch, 5. Dezember 2012 07:24
> >> To: users@cxf.apache.org
> >> Subject: Re: service location in WSDL generated by CXF
> >>
> >> Many thanks to all of you about the suggestions.
> >>
> >> To Alessio,
> >> As we are working on migrating our application to CXF and these
> application
> >> needs this function to work, can you estimate when the fix could be
> >> delivered? It will be helpful for us to size and schedule the whole
> migration
> >> work. Thanks.
> >>
> >> 2012/12/4 Alessio Soldano <as...@redhat.com>
> >>
> >>> I agree with the need of such a functionality.
> >>> I'm likely going to work on this soon, will post the jira reference
> later.
> >>> Default behaviour can for sure stay as is, but I see scenarios
> >>> requiring a different configuration (e.g. all endpoints, belonging to
> >>> the same wsdl service, to be updated using the configured EndpointInfo
> >>> published url property before writing the wsdl definition and
> >>> returning it for the current query).
> >>>
> >>> Cheers
> >>> Alessio
> >>>
> >>> On 12/03/2012 05:56 PM, Andrei Shakirin wrote:
> >>>> Hi Ivan,
> >>>>
> >>>> I can imagine that in some cases it makes sense to update all WSDL
> >>> service endpoints, but I wouldn't configure it by default.
> >>>> We can introduce additional context property
> >>> "rewriteSoapAddressForAllServices" (like autoRewriteSoapAddress ,
> >>> publishedEndpointUrl) and if it is activated, endpoint of all relevant
> >>> services will be updated. Default value will be false.
> >>>> Logic located in WSDLGetUtils.updateDoc().
> >>>>
> >>>> Cheers,
> >>>> Andrei.
> >>>>
> >>>>> -----Original Message-----
> >>>>> From: Ivan [mailto:xhhsld@gmail.com]
> >>>>> Sent: Sonntag, 2. Dezember 2012 16:08
> >>>>> To: users@cxf.apache.org
> >>>>> Subject: Re: service location in WSDL generated by CXF
> >>>>>
> >>>>> Well, I agree that, the accessing address for other ports may not
> >>> correct
> >>>>> in some scenarios. While thinking the common usage in the Java EE
> >>>>> environment, we usually publish those endpoints in one web app, and
> >>>>> the target web app will be accessed in one host, which associated
> >>>>> with web connectors. So, I am thinking that this is a good idea,
> >>>>> and maybe a flag could be used to determine the behavior.
> >>>>>
> >>>>> I added the similar function in Apache Geronimo, and think that it
> >>>>> will
> >>> be
> >>>>> better that CXF could provide kind of native support for this.
> >>>>> [1]
> >>>>> https://svn.apache.org/repos/asf/geronimo/server/branches/3.0/plugi
> >>>>> ns/a
> >>>>> xis2/geronimo-
> >>>>>
> >> axis2/src/main/java/org/apache/geronimo/axis2/WSDLQueryHandler.java
> >>>>>
> >>>>> Thoughts ?
> >>>>>
> >>>>> 2012/11/29 Andrei Shakirin <as...@talend.com>
> >>>>>
> >>>>>> Proposed update of all services endpoints can be in some cases
> >>> incorrect.
> >>>>>> The absolute endpoint URL can be determined only from incoming
> >> request.
> >>>>> As
> >>>>>> far as you request InventoryService, not InventoryProvider; only
> >>>>>> InventoryService endpoint is updated.
> >>>>>> Imagine, you request InventoryProvider using other URL (for
> >>>>>> example http://127.0.0.1:9080/jaxws-wsdlfaults2/InventoryProvider,
> >>>>>> or even
> >>> using
> >>>>>> other port) and InventoryProvider will have absolute URL different
> >>>>>> as InventoryService.
> >>>>>>
> >>>>>> Cheers,
> >>>>>> Andrei.
> >>>>>>
> >>>>>>> -----Original Message-----
> >>>>>>> From: Bin Zhu [mailto:luckyzhubin@gmail.com]
> >>>>>>> Sent: Dienstag, 27. November 2012 07:30
> >>>>>>> To: users@cxf.apache.org
> >>>>>>> Subject: service location in WSDL generated by CXF
> >>>>>>>
> >>>>>>> Hi All,
> >>>>>>> I find that when define 2 service using a SEI class and a Service
> >>>>>> provider class,
> >>>>>>> if query the service defined by SEI, then in the WSDL generated
> >>>>>>> by
> >>> CXF,
> >>>>>> it will
> >>>>>>> only update the service location for this SEI service, but the
> >>> location
> >>>>>> defined
> >>>>>>> by service provider will not be updated.
> >>>>>>> Is this behavior as design? Could it update all the service
> >>>>>>> location
> >>>>>> rather than
> >>>>>>> only the requested one? Thanks in advance.
> >>>>>>>
> >>>>>>> Service defined by SEI:
> >>>>>>>
> >> @WebService(targetNamespace="http://inventory.wsdlfaults.jaxws",
> >>>>>>>             wsdlLocation="WEB-INF/wsdl/Inventory.wsdl",
> >>>>>>>             serviceName="InventoryService",
> >>>>>>>             portName="InventoryPort",
> >>>>>>>
> >>>>>>>
> >>>>>
> >>> endpointInterface="jaxws.wsdlfaults.wsfvt.server.inventory.InventoryPo
> >>> rtT
> >>>>>>> ype")
> >>>>>>> Service defined by Service Provider:
> >>>>>>>
> >>>>>
> >> @WebServiceProvider(targetNamespace="http://inventory.wsdlfaults.ja
> >>>>> xw
> >>>>>>> s",
> >>>>>>>                     wsdlLocation="WEB-INF/wsdl/Inventory.wsdl",
> >>>>>>>                     serviceName="InventoryProvider",
> >>>>>>>                     portName="InventoryProviderPort")
> >>>>>>>
> >>>>>>> WSDL generated by CXF using this URL:
> >>>>>>> http://localhost:9080/jaxws-wsdlfaults2/InventoryService?wsdl
> >>>>>>>
> >>>>>>> <service name="InventoryService"> <port
> >>>>>>> binding="tns:InventoryBinding" name="InventoryPort">
> >>>>>>> <soap:address location="
> >>>>>>> http://localhost:9080/jaxws-wsdlfaults2/InventoryService
> >>>>>> "></soap:address>
> >>>>>>> </port>
> >>>>>>> </service>
> >>>>>>> <service name="InventoryProvider"> <port
> >>>>>>> binding="tns:InventoryBinding" name="InventoryProviderPort">
> >>>>>>> <soap:address location="/InventoryProvider"></soap:address>
> >>>>>>> </port>
> >>>>>>> </service>
> >>>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> --
> >>>>> Ivan
> >>>
> >>>
> >>> --
> >>> Alessio Soldano
> >>> Web Service Lead, JBoss
> >>>
>
>
> --
> Alessio Soldano
> Web Service Lead, JBoss
>

Re: service location in WSDL generated by CXF

Posted by Alessio Soldano <as...@redhat.com>.
Hi,
I've committed a patch for supporting
'autoRewriteSoapAddressForAllServices' option. The main difference with
what the already existing 'autoRewriteSoapAddress' option did, is that
when rewriting the other service/ports soap:address location attributes,
the existing path component of the address is not changed, as that would
not really make sense.

The new option is an extension of the former one; so setting the new one
to true implies also enable the former one (IOW the current service/port
address is also fully rewritten).

Cheers
Alessio

On 12/05/2012 11:51 AM, Andrei Shakirin wrote:
> Issue https://issues.apache.org/jira/browse/CXF-4677 is created.
> Would you like to deliver the patch yourself?
> 
> Cheers,
> Andrei.
> 
>> -----Original Message-----
>> From: Bin Zhu [mailto:luckyzhubin@gmail.com]
>> Sent: Mittwoch, 5. Dezember 2012 07:24
>> To: users@cxf.apache.org
>> Subject: Re: service location in WSDL generated by CXF
>>
>> Many thanks to all of you about the suggestions.
>>
>> To Alessio,
>> As we are working on migrating our application to CXF and these application
>> needs this function to work, can you estimate when the fix could be
>> delivered? It will be helpful for us to size and schedule the whole migration
>> work. Thanks.
>>
>> 2012/12/4 Alessio Soldano <as...@redhat.com>
>>
>>> I agree with the need of such a functionality.
>>> I'm likely going to work on this soon, will post the jira reference later.
>>> Default behaviour can for sure stay as is, but I see scenarios
>>> requiring a different configuration (e.g. all endpoints, belonging to
>>> the same wsdl service, to be updated using the configured EndpointInfo
>>> published url property before writing the wsdl definition and
>>> returning it for the current query).
>>>
>>> Cheers
>>> Alessio
>>>
>>> On 12/03/2012 05:56 PM, Andrei Shakirin wrote:
>>>> Hi Ivan,
>>>>
>>>> I can imagine that in some cases it makes sense to update all WSDL
>>> service endpoints, but I wouldn't configure it by default.
>>>> We can introduce additional context property
>>> "rewriteSoapAddressForAllServices" (like autoRewriteSoapAddress ,
>>> publishedEndpointUrl) and if it is activated, endpoint of all relevant
>>> services will be updated. Default value will be false.
>>>> Logic located in WSDLGetUtils.updateDoc().
>>>>
>>>> Cheers,
>>>> Andrei.
>>>>
>>>>> -----Original Message-----
>>>>> From: Ivan [mailto:xhhsld@gmail.com]
>>>>> Sent: Sonntag, 2. Dezember 2012 16:08
>>>>> To: users@cxf.apache.org
>>>>> Subject: Re: service location in WSDL generated by CXF
>>>>>
>>>>> Well, I agree that, the accessing address for other ports may not
>>> correct
>>>>> in some scenarios. While thinking the common usage in the Java EE
>>>>> environment, we usually publish those endpoints in one web app, and
>>>>> the target web app will be accessed in one host, which associated
>>>>> with web connectors. So, I am thinking that this is a good idea,
>>>>> and maybe a flag could be used to determine the behavior.
>>>>>
>>>>> I added the similar function in Apache Geronimo, and think that it
>>>>> will
>>> be
>>>>> better that CXF could provide kind of native support for this.
>>>>> [1]
>>>>> https://svn.apache.org/repos/asf/geronimo/server/branches/3.0/plugi
>>>>> ns/a
>>>>> xis2/geronimo-
>>>>>
>> axis2/src/main/java/org/apache/geronimo/axis2/WSDLQueryHandler.java
>>>>>
>>>>> Thoughts ?
>>>>>
>>>>> 2012/11/29 Andrei Shakirin <as...@talend.com>
>>>>>
>>>>>> Proposed update of all services endpoints can be in some cases
>>> incorrect.
>>>>>> The absolute endpoint URL can be determined only from incoming
>> request.
>>>>> As
>>>>>> far as you request InventoryService, not InventoryProvider; only
>>>>>> InventoryService endpoint is updated.
>>>>>> Imagine, you request InventoryProvider using other URL (for
>>>>>> example http://127.0.0.1:9080/jaxws-wsdlfaults2/InventoryProvider,
>>>>>> or even
>>> using
>>>>>> other port) and InventoryProvider will have absolute URL different
>>>>>> as InventoryService.
>>>>>>
>>>>>> Cheers,
>>>>>> Andrei.
>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> From: Bin Zhu [mailto:luckyzhubin@gmail.com]
>>>>>>> Sent: Dienstag, 27. November 2012 07:30
>>>>>>> To: users@cxf.apache.org
>>>>>>> Subject: service location in WSDL generated by CXF
>>>>>>>
>>>>>>> Hi All,
>>>>>>> I find that when define 2 service using a SEI class and a Service
>>>>>> provider class,
>>>>>>> if query the service defined by SEI, then in the WSDL generated
>>>>>>> by
>>> CXF,
>>>>>> it will
>>>>>>> only update the service location for this SEI service, but the
>>> location
>>>>>> defined
>>>>>>> by service provider will not be updated.
>>>>>>> Is this behavior as design? Could it update all the service
>>>>>>> location
>>>>>> rather than
>>>>>>> only the requested one? Thanks in advance.
>>>>>>>
>>>>>>> Service defined by SEI:
>>>>>>>
>> @WebService(targetNamespace="http://inventory.wsdlfaults.jaxws",
>>>>>>>             wsdlLocation="WEB-INF/wsdl/Inventory.wsdl",
>>>>>>>             serviceName="InventoryService",
>>>>>>>             portName="InventoryPort",
>>>>>>>
>>>>>>>
>>>>>
>>> endpointInterface="jaxws.wsdlfaults.wsfvt.server.inventory.InventoryPo
>>> rtT
>>>>>>> ype")
>>>>>>> Service defined by Service Provider:
>>>>>>>
>>>>>
>> @WebServiceProvider(targetNamespace="http://inventory.wsdlfaults.ja
>>>>> xw
>>>>>>> s",
>>>>>>>                     wsdlLocation="WEB-INF/wsdl/Inventory.wsdl",
>>>>>>>                     serviceName="InventoryProvider",
>>>>>>>                     portName="InventoryProviderPort")
>>>>>>>
>>>>>>> WSDL generated by CXF using this URL:
>>>>>>> http://localhost:9080/jaxws-wsdlfaults2/InventoryService?wsdl
>>>>>>>
>>>>>>> <service name="InventoryService"> <port
>>>>>>> binding="tns:InventoryBinding" name="InventoryPort">
>>>>>>> <soap:address location="
>>>>>>> http://localhost:9080/jaxws-wsdlfaults2/InventoryService
>>>>>> "></soap:address>
>>>>>>> </port>
>>>>>>> </service>
>>>>>>> <service name="InventoryProvider"> <port
>>>>>>> binding="tns:InventoryBinding" name="InventoryProviderPort">
>>>>>>> <soap:address location="/InventoryProvider"></soap:address>
>>>>>>> </port>
>>>>>>> </service>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Ivan
>>>
>>>
>>> --
>>> Alessio Soldano
>>> Web Service Lead, JBoss
>>>


-- 
Alessio Soldano
Web Service Lead, JBoss

RE: service location in WSDL generated by CXF

Posted by Andrei Shakirin <as...@talend.com>.
Issue https://issues.apache.org/jira/browse/CXF-4677 is created.
Would you like to deliver the patch yourself?

Cheers,
Andrei.

> -----Original Message-----
> From: Bin Zhu [mailto:luckyzhubin@gmail.com]
> Sent: Mittwoch, 5. Dezember 2012 07:24
> To: users@cxf.apache.org
> Subject: Re: service location in WSDL generated by CXF
> 
> Many thanks to all of you about the suggestions.
> 
> To Alessio,
> As we are working on migrating our application to CXF and these application
> needs this function to work, can you estimate when the fix could be
> delivered? It will be helpful for us to size and schedule the whole migration
> work. Thanks.
> 
> 2012/12/4 Alessio Soldano <as...@redhat.com>
> 
> > I agree with the need of such a functionality.
> > I'm likely going to work on this soon, will post the jira reference later.
> > Default behaviour can for sure stay as is, but I see scenarios
> > requiring a different configuration (e.g. all endpoints, belonging to
> > the same wsdl service, to be updated using the configured EndpointInfo
> > published url property before writing the wsdl definition and
> > returning it for the current query).
> >
> > Cheers
> > Alessio
> >
> > On 12/03/2012 05:56 PM, Andrei Shakirin wrote:
> > > Hi Ivan,
> > >
> > > I can imagine that in some cases it makes sense to update all WSDL
> > service endpoints, but I wouldn't configure it by default.
> > > We can introduce additional context property
> > "rewriteSoapAddressForAllServices" (like autoRewriteSoapAddress ,
> > publishedEndpointUrl) and if it is activated, endpoint of all relevant
> > services will be updated. Default value will be false.
> > > Logic located in WSDLGetUtils.updateDoc().
> > >
> > > Cheers,
> > > Andrei.
> > >
> > >> -----Original Message-----
> > >> From: Ivan [mailto:xhhsld@gmail.com]
> > >> Sent: Sonntag, 2. Dezember 2012 16:08
> > >> To: users@cxf.apache.org
> > >> Subject: Re: service location in WSDL generated by CXF
> > >>
> > >> Well, I agree that, the accessing address for other ports may not
> > correct
> > >> in some scenarios. While thinking the common usage in the Java EE
> > >> environment, we usually publish those endpoints in one web app, and
> > >> the target web app will be accessed in one host, which associated
> > >> with web connectors. So, I am thinking that this is a good idea,
> > >> and maybe a flag could be used to determine the behavior.
> > >>
> > >> I added the similar function in Apache Geronimo, and think that it
> > >> will
> > be
> > >> better that CXF could provide kind of native support for this.
> > >> [1]
> > >> https://svn.apache.org/repos/asf/geronimo/server/branches/3.0/plugi
> > >> ns/a
> > >> xis2/geronimo-
> > >>
> axis2/src/main/java/org/apache/geronimo/axis2/WSDLQueryHandler.java
> > >>
> > >> Thoughts ?
> > >>
> > >> 2012/11/29 Andrei Shakirin <as...@talend.com>
> > >>
> > >>> Proposed update of all services endpoints can be in some cases
> > incorrect.
> > >>> The absolute endpoint URL can be determined only from incoming
> request.
> > >> As
> > >>> far as you request InventoryService, not InventoryProvider; only
> > >>> InventoryService endpoint is updated.
> > >>> Imagine, you request InventoryProvider using other URL (for
> > >>> example http://127.0.0.1:9080/jaxws-wsdlfaults2/InventoryProvider,
> > >>> or even
> > using
> > >>> other port) and InventoryProvider will have absolute URL different
> > >>> as InventoryService.
> > >>>
> > >>> Cheers,
> > >>> Andrei.
> > >>>
> > >>>> -----Original Message-----
> > >>>> From: Bin Zhu [mailto:luckyzhubin@gmail.com]
> > >>>> Sent: Dienstag, 27. November 2012 07:30
> > >>>> To: users@cxf.apache.org
> > >>>> Subject: service location in WSDL generated by CXF
> > >>>>
> > >>>> Hi All,
> > >>>> I find that when define 2 service using a SEI class and a Service
> > >>> provider class,
> > >>>> if query the service defined by SEI, then in the WSDL generated
> > >>>> by
> > CXF,
> > >>> it will
> > >>>> only update the service location for this SEI service, but the
> > location
> > >>> defined
> > >>>> by service provider will not be updated.
> > >>>> Is this behavior as design? Could it update all the service
> > >>>> location
> > >>> rather than
> > >>>> only the requested one? Thanks in advance.
> > >>>>
> > >>>> Service defined by SEI:
> > >>>>
> @WebService(targetNamespace="http://inventory.wsdlfaults.jaxws",
> > >>>>             wsdlLocation="WEB-INF/wsdl/Inventory.wsdl",
> > >>>>             serviceName="InventoryService",
> > >>>>             portName="InventoryPort",
> > >>>>
> > >>>>
> > >>
> > endpointInterface="jaxws.wsdlfaults.wsfvt.server.inventory.InventoryPo
> > rtT
> > >>>> ype")
> > >>>> Service defined by Service Provider:
> > >>>>
> > >>
> @WebServiceProvider(targetNamespace="http://inventory.wsdlfaults.ja
> > >> xw
> > >>>> s",
> > >>>>                     wsdlLocation="WEB-INF/wsdl/Inventory.wsdl",
> > >>>>                     serviceName="InventoryProvider",
> > >>>>                     portName="InventoryProviderPort")
> > >>>>
> > >>>> WSDL generated by CXF using this URL:
> > >>>> http://localhost:9080/jaxws-wsdlfaults2/InventoryService?wsdl
> > >>>>
> > >>>> <service name="InventoryService"> <port
> > >>>> binding="tns:InventoryBinding" name="InventoryPort">
> > >>>> <soap:address location="
> > >>>> http://localhost:9080/jaxws-wsdlfaults2/InventoryService
> > >>> "></soap:address>
> > >>>> </port>
> > >>>> </service>
> > >>>> <service name="InventoryProvider"> <port
> > >>>> binding="tns:InventoryBinding" name="InventoryProviderPort">
> > >>>> <soap:address location="/InventoryProvider"></soap:address>
> > >>>> </port>
> > >>>> </service>
> > >>>
> > >>
> > >>
> > >>
> > >> --
> > >> Ivan
> >
> >
> > --
> > Alessio Soldano
> > Web Service Lead, JBoss
> >

Re: service location in WSDL generated by CXF

Posted by Bin Zhu <lu...@gmail.com>.
Many thanks to all of you about the suggestions.

To Alessio,
As we are working on migrating our application to CXF and these application
needs this function to work, can you estimate when the fix could be
delivered? It will be helpful for us to size and schedule the whole
migration work. Thanks.

2012/12/4 Alessio Soldano <as...@redhat.com>

> I agree with the need of such a functionality.
> I'm likely going to work on this soon, will post the jira reference later.
> Default behaviour can for sure stay as is, but I see scenarios requiring
> a different configuration (e.g. all endpoints, belonging to the same
> wsdl service, to be updated using the configured EndpointInfo published
> url property before writing the wsdl definition and returning it for the
> current query).
>
> Cheers
> Alessio
>
> On 12/03/2012 05:56 PM, Andrei Shakirin wrote:
> > Hi Ivan,
> >
> > I can imagine that in some cases it makes sense to update all WSDL
> service endpoints, but I wouldn't configure it by default.
> > We can introduce additional context property
> "rewriteSoapAddressForAllServices" (like autoRewriteSoapAddress ,
> publishedEndpointUrl) and if it is activated, endpoint of all relevant
> services will be updated. Default value will be false.
> > Logic located in WSDLGetUtils.updateDoc().
> >
> > Cheers,
> > Andrei.
> >
> >> -----Original Message-----
> >> From: Ivan [mailto:xhhsld@gmail.com]
> >> Sent: Sonntag, 2. Dezember 2012 16:08
> >> To: users@cxf.apache.org
> >> Subject: Re: service location in WSDL generated by CXF
> >>
> >> Well, I agree that, the accessing address for other ports may not
> correct
> >> in some scenarios. While thinking the common usage in the Java EE
> >> environment, we usually publish those endpoints in one web app, and the
> >> target web app will be accessed in one host, which associated with web
> >> connectors. So, I am thinking that this is a good idea, and maybe a flag
> >> could be used to determine the behavior.
> >>
> >> I added the similar function in Apache Geronimo, and think that it will
> be
> >> better that CXF could provide kind of native support for this.
> >> [1]
> >> https://svn.apache.org/repos/asf/geronimo/server/branches/3.0/plugins/a
> >> xis2/geronimo-
> >> axis2/src/main/java/org/apache/geronimo/axis2/WSDLQueryHandler.java
> >>
> >> Thoughts ?
> >>
> >> 2012/11/29 Andrei Shakirin <as...@talend.com>
> >>
> >>> Proposed update of all services endpoints can be in some cases
> incorrect.
> >>> The absolute endpoint URL can be determined only from incoming request.
> >> As
> >>> far as you request InventoryService, not InventoryProvider; only
> >>> InventoryService endpoint is updated.
> >>> Imagine, you request InventoryProvider using other URL (for example
> >>> http://127.0.0.1:9080/jaxws-wsdlfaults2/InventoryProvider, or even
> using
> >>> other port) and InventoryProvider will have absolute URL different as
> >>> InventoryService.
> >>>
> >>> Cheers,
> >>> Andrei.
> >>>
> >>>> -----Original Message-----
> >>>> From: Bin Zhu [mailto:luckyzhubin@gmail.com]
> >>>> Sent: Dienstag, 27. November 2012 07:30
> >>>> To: users@cxf.apache.org
> >>>> Subject: service location in WSDL generated by CXF
> >>>>
> >>>> Hi All,
> >>>> I find that when define 2 service using a SEI class and a Service
> >>> provider class,
> >>>> if query the service defined by SEI, then in the WSDL generated by
> CXF,
> >>> it will
> >>>> only update the service location for this SEI service, but the
> location
> >>> defined
> >>>> by service provider will not be updated.
> >>>> Is this behavior as design? Could it update all the service location
> >>> rather than
> >>>> only the requested one? Thanks in advance.
> >>>>
> >>>> Service defined by SEI:
> >>>> @WebService(targetNamespace="http://inventory.wsdlfaults.jaxws",
> >>>>             wsdlLocation="WEB-INF/wsdl/Inventory.wsdl",
> >>>>             serviceName="InventoryService",
> >>>>             portName="InventoryPort",
> >>>>
> >>>>
> >>
> endpointInterface="jaxws.wsdlfaults.wsfvt.server.inventory.InventoryPortT
> >>>> ype")
> >>>> Service defined by Service Provider:
> >>>>
> >> @WebServiceProvider(targetNamespace="http://inventory.wsdlfaults.jaxw
> >>>> s",
> >>>>                     wsdlLocation="WEB-INF/wsdl/Inventory.wsdl",
> >>>>                     serviceName="InventoryProvider",
> >>>>                     portName="InventoryProviderPort")
> >>>>
> >>>> WSDL generated by CXF using this URL:
> >>>> http://localhost:9080/jaxws-wsdlfaults2/InventoryService?wsdl
> >>>>
> >>>> <service name="InventoryService">
> >>>> <port binding="tns:InventoryBinding" name="InventoryPort">
> >>>> <soap:address location="
> >>>> http://localhost:9080/jaxws-wsdlfaults2/InventoryService
> >>> "></soap:address>
> >>>> </port>
> >>>> </service>
> >>>> <service name="InventoryProvider">
> >>>> <port binding="tns:InventoryBinding" name="InventoryProviderPort">
> >>>> <soap:address location="/InventoryProvider"></soap:address>
> >>>> </port>
> >>>> </service>
> >>>
> >>
> >>
> >>
> >> --
> >> Ivan
>
>
> --
> Alessio Soldano
> Web Service Lead, JBoss
>

Re: service location in WSDL generated by CXF

Posted by Alessio Soldano <as...@redhat.com>.
I agree with the need of such a functionality.
I'm likely going to work on this soon, will post the jira reference later.
Default behaviour can for sure stay as is, but I see scenarios requiring
a different configuration (e.g. all endpoints, belonging to the same
wsdl service, to be updated using the configured EndpointInfo published
url property before writing the wsdl definition and returning it for the
current query).

Cheers
Alessio

On 12/03/2012 05:56 PM, Andrei Shakirin wrote:
> Hi Ivan,
> 
> I can imagine that in some cases it makes sense to update all WSDL service endpoints, but I wouldn't configure it by default.
> We can introduce additional context property "rewriteSoapAddressForAllServices" (like autoRewriteSoapAddress , publishedEndpointUrl) and if it is activated, endpoint of all relevant services will be updated. Default value will be false.
> Logic located in WSDLGetUtils.updateDoc().
> 
> Cheers,
> Andrei.
> 
>> -----Original Message-----
>> From: Ivan [mailto:xhhsld@gmail.com]
>> Sent: Sonntag, 2. Dezember 2012 16:08
>> To: users@cxf.apache.org
>> Subject: Re: service location in WSDL generated by CXF
>>
>> Well, I agree that, the accessing address for other ports may not correct
>> in some scenarios. While thinking the common usage in the Java EE
>> environment, we usually publish those endpoints in one web app, and the
>> target web app will be accessed in one host, which associated with web
>> connectors. So, I am thinking that this is a good idea, and maybe a flag
>> could be used to determine the behavior.
>>
>> I added the similar function in Apache Geronimo, and think that it will be
>> better that CXF could provide kind of native support for this.
>> [1]
>> https://svn.apache.org/repos/asf/geronimo/server/branches/3.0/plugins/a
>> xis2/geronimo-
>> axis2/src/main/java/org/apache/geronimo/axis2/WSDLQueryHandler.java
>>
>> Thoughts ?
>>
>> 2012/11/29 Andrei Shakirin <as...@talend.com>
>>
>>> Proposed update of all services endpoints can be in some cases incorrect.
>>> The absolute endpoint URL can be determined only from incoming request.
>> As
>>> far as you request InventoryService, not InventoryProvider; only
>>> InventoryService endpoint is updated.
>>> Imagine, you request InventoryProvider using other URL (for example
>>> http://127.0.0.1:9080/jaxws-wsdlfaults2/InventoryProvider, or even using
>>> other port) and InventoryProvider will have absolute URL different as
>>> InventoryService.
>>>
>>> Cheers,
>>> Andrei.
>>>
>>>> -----Original Message-----
>>>> From: Bin Zhu [mailto:luckyzhubin@gmail.com]
>>>> Sent: Dienstag, 27. November 2012 07:30
>>>> To: users@cxf.apache.org
>>>> Subject: service location in WSDL generated by CXF
>>>>
>>>> Hi All,
>>>> I find that when define 2 service using a SEI class and a Service
>>> provider class,
>>>> if query the service defined by SEI, then in the WSDL generated by CXF,
>>> it will
>>>> only update the service location for this SEI service, but the location
>>> defined
>>>> by service provider will not be updated.
>>>> Is this behavior as design? Could it update all the service location
>>> rather than
>>>> only the requested one? Thanks in advance.
>>>>
>>>> Service defined by SEI:
>>>> @WebService(targetNamespace="http://inventory.wsdlfaults.jaxws",
>>>>             wsdlLocation="WEB-INF/wsdl/Inventory.wsdl",
>>>>             serviceName="InventoryService",
>>>>             portName="InventoryPort",
>>>>
>>>>
>> endpointInterface="jaxws.wsdlfaults.wsfvt.server.inventory.InventoryPortT
>>>> ype")
>>>> Service defined by Service Provider:
>>>>
>> @WebServiceProvider(targetNamespace="http://inventory.wsdlfaults.jaxw
>>>> s",
>>>>                     wsdlLocation="WEB-INF/wsdl/Inventory.wsdl",
>>>>                     serviceName="InventoryProvider",
>>>>                     portName="InventoryProviderPort")
>>>>
>>>> WSDL generated by CXF using this URL:
>>>> http://localhost:9080/jaxws-wsdlfaults2/InventoryService?wsdl
>>>>
>>>> <service name="InventoryService">
>>>> <port binding="tns:InventoryBinding" name="InventoryPort">
>>>> <soap:address location="
>>>> http://localhost:9080/jaxws-wsdlfaults2/InventoryService
>>> "></soap:address>
>>>> </port>
>>>> </service>
>>>> <service name="InventoryProvider">
>>>> <port binding="tns:InventoryBinding" name="InventoryProviderPort">
>>>> <soap:address location="/InventoryProvider"></soap:address>
>>>> </port>
>>>> </service>
>>>
>>
>>
>>
>> --
>> Ivan


-- 
Alessio Soldano
Web Service Lead, JBoss

RE: service location in WSDL generated by CXF

Posted by Andrei Shakirin <as...@talend.com>.
Hi Ivan,

I can imagine that in some cases it makes sense to update all WSDL service endpoints, but I wouldn't configure it by default.
We can introduce additional context property "rewriteSoapAddressForAllServices" (like autoRewriteSoapAddress , publishedEndpointUrl) and if it is activated, endpoint of all relevant services will be updated. Default value will be false.
Logic located in WSDLGetUtils.updateDoc().

Cheers,
Andrei.

> -----Original Message-----
> From: Ivan [mailto:xhhsld@gmail.com]
> Sent: Sonntag, 2. Dezember 2012 16:08
> To: users@cxf.apache.org
> Subject: Re: service location in WSDL generated by CXF
> 
> Well, I agree that, the accessing address for other ports may not correct
> in some scenarios. While thinking the common usage in the Java EE
> environment, we usually publish those endpoints in one web app, and the
> target web app will be accessed in one host, which associated with web
> connectors. So, I am thinking that this is a good idea, and maybe a flag
> could be used to determine the behavior.
> 
> I added the similar function in Apache Geronimo, and think that it will be
> better that CXF could provide kind of native support for this.
> [1]
> https://svn.apache.org/repos/asf/geronimo/server/branches/3.0/plugins/a
> xis2/geronimo-
> axis2/src/main/java/org/apache/geronimo/axis2/WSDLQueryHandler.java
> 
> Thoughts ?
> 
> 2012/11/29 Andrei Shakirin <as...@talend.com>
> 
> > Proposed update of all services endpoints can be in some cases incorrect.
> > The absolute endpoint URL can be determined only from incoming request.
> As
> > far as you request InventoryService, not InventoryProvider; only
> > InventoryService endpoint is updated.
> > Imagine, you request InventoryProvider using other URL (for example
> > http://127.0.0.1:9080/jaxws-wsdlfaults2/InventoryProvider, or even using
> > other port) and InventoryProvider will have absolute URL different as
> > InventoryService.
> >
> > Cheers,
> > Andrei.
> >
> > > -----Original Message-----
> > > From: Bin Zhu [mailto:luckyzhubin@gmail.com]
> > > Sent: Dienstag, 27. November 2012 07:30
> > > To: users@cxf.apache.org
> > > Subject: service location in WSDL generated by CXF
> > >
> > > Hi All,
> > > I find that when define 2 service using a SEI class and a Service
> > provider class,
> > > if query the service defined by SEI, then in the WSDL generated by CXF,
> > it will
> > > only update the service location for this SEI service, but the location
> > defined
> > > by service provider will not be updated.
> > > Is this behavior as design? Could it update all the service location
> > rather than
> > > only the requested one? Thanks in advance.
> > >
> > > Service defined by SEI:
> > > @WebService(targetNamespace="http://inventory.wsdlfaults.jaxws",
> > >             wsdlLocation="WEB-INF/wsdl/Inventory.wsdl",
> > >             serviceName="InventoryService",
> > >             portName="InventoryPort",
> > >
> > >
> endpointInterface="jaxws.wsdlfaults.wsfvt.server.inventory.InventoryPortT
> > > ype")
> > > Service defined by Service Provider:
> > >
> @WebServiceProvider(targetNamespace="http://inventory.wsdlfaults.jaxw
> > > s",
> > >                     wsdlLocation="WEB-INF/wsdl/Inventory.wsdl",
> > >                     serviceName="InventoryProvider",
> > >                     portName="InventoryProviderPort")
> > >
> > > WSDL generated by CXF using this URL:
> > > http://localhost:9080/jaxws-wsdlfaults2/InventoryService?wsdl
> > >
> > > <service name="InventoryService">
> > > <port binding="tns:InventoryBinding" name="InventoryPort">
> > > <soap:address location="
> > > http://localhost:9080/jaxws-wsdlfaults2/InventoryService
> > "></soap:address>
> > > </port>
> > > </service>
> > > <service name="InventoryProvider">
> > > <port binding="tns:InventoryBinding" name="InventoryProviderPort">
> > > <soap:address location="/InventoryProvider"></soap:address>
> > > </port>
> > > </service>
> >
> 
> 
> 
> --
> Ivan

Re: service location in WSDL generated by CXF

Posted by Ivan <xh...@gmail.com>.
Well, I agree that, the accessing address for other ports may not correct
in some scenarios. While thinking the common usage in the Java EE
environment, we usually publish those endpoints in one web app, and the
target web app will be accessed in one host, which associated with web
connectors. So, I am thinking that this is a good idea, and maybe a flag
could be used to determine the behavior.

I added the similar function in Apache Geronimo, and think that it will be
better that CXF could provide kind of native support for this.
[1]
https://svn.apache.org/repos/asf/geronimo/server/branches/3.0/plugins/axis2/geronimo-axis2/src/main/java/org/apache/geronimo/axis2/WSDLQueryHandler.java

Thoughts ?

2012/11/29 Andrei Shakirin <as...@talend.com>

> Proposed update of all services endpoints can be in some cases incorrect.
> The absolute endpoint URL can be determined only from incoming request. As
> far as you request InventoryService, not InventoryProvider; only
> InventoryService endpoint is updated.
> Imagine, you request InventoryProvider using other URL (for example
> http://127.0.0.1:9080/jaxws-wsdlfaults2/InventoryProvider, or even using
> other port) and InventoryProvider will have absolute URL different as
> InventoryService.
>
> Cheers,
> Andrei.
>
> > -----Original Message-----
> > From: Bin Zhu [mailto:luckyzhubin@gmail.com]
> > Sent: Dienstag, 27. November 2012 07:30
> > To: users@cxf.apache.org
> > Subject: service location in WSDL generated by CXF
> >
> > Hi All,
> > I find that when define 2 service using a SEI class and a Service
> provider class,
> > if query the service defined by SEI, then in the WSDL generated by CXF,
> it will
> > only update the service location for this SEI service, but the location
> defined
> > by service provider will not be updated.
> > Is this behavior as design? Could it update all the service location
> rather than
> > only the requested one? Thanks in advance.
> >
> > Service defined by SEI:
> > @WebService(targetNamespace="http://inventory.wsdlfaults.jaxws",
> >             wsdlLocation="WEB-INF/wsdl/Inventory.wsdl",
> >             serviceName="InventoryService",
> >             portName="InventoryPort",
> >
> > endpointInterface="jaxws.wsdlfaults.wsfvt.server.inventory.InventoryPortT
> > ype")
> > Service defined by Service Provider:
> > @WebServiceProvider(targetNamespace="http://inventory.wsdlfaults.jaxw
> > s",
> >                     wsdlLocation="WEB-INF/wsdl/Inventory.wsdl",
> >                     serviceName="InventoryProvider",
> >                     portName="InventoryProviderPort")
> >
> > WSDL generated by CXF using this URL:
> > http://localhost:9080/jaxws-wsdlfaults2/InventoryService?wsdl
> >
> > <service name="InventoryService">
> > <port binding="tns:InventoryBinding" name="InventoryPort">
> > <soap:address location="
> > http://localhost:9080/jaxws-wsdlfaults2/InventoryService
> "></soap:address>
> > </port>
> > </service>
> > <service name="InventoryProvider">
> > <port binding="tns:InventoryBinding" name="InventoryProviderPort">
> > <soap:address location="/InventoryProvider"></soap:address>
> > </port>
> > </service>
>



-- 
Ivan

RE: service location in WSDL generated by CXF

Posted by Andrei Shakirin <as...@talend.com>.
Proposed update of all services endpoints can be in some cases incorrect.
The absolute endpoint URL can be determined only from incoming request. As far as you request InventoryService, not InventoryProvider; only InventoryService endpoint is updated.
Imagine, you request InventoryProvider using other URL (for example http://127.0.0.1:9080/jaxws-wsdlfaults2/InventoryProvider, or even using other port) and InventoryProvider will have absolute URL different as InventoryService.

Cheers,
Andrei.

> -----Original Message-----
> From: Bin Zhu [mailto:luckyzhubin@gmail.com]
> Sent: Dienstag, 27. November 2012 07:30
> To: users@cxf.apache.org
> Subject: service location in WSDL generated by CXF
> 
> Hi All,
> I find that when define 2 service using a SEI class and a Service provider class,
> if query the service defined by SEI, then in the WSDL generated by CXF, it will
> only update the service location for this SEI service, but the location defined
> by service provider will not be updated.
> Is this behavior as design? Could it update all the service location rather than
> only the requested one? Thanks in advance.
> 
> Service defined by SEI:
> @WebService(targetNamespace="http://inventory.wsdlfaults.jaxws",
>             wsdlLocation="WEB-INF/wsdl/Inventory.wsdl",
>             serviceName="InventoryService",
>             portName="InventoryPort",
> 
> endpointInterface="jaxws.wsdlfaults.wsfvt.server.inventory.InventoryPortT
> ype")
> Service defined by Service Provider:
> @WebServiceProvider(targetNamespace="http://inventory.wsdlfaults.jaxw
> s",
>                     wsdlLocation="WEB-INF/wsdl/Inventory.wsdl",
>                     serviceName="InventoryProvider",
>                     portName="InventoryProviderPort")
> 
> WSDL generated by CXF using this URL:
> http://localhost:9080/jaxws-wsdlfaults2/InventoryService?wsdl
> 
> <service name="InventoryService">
> <port binding="tns:InventoryBinding" name="InventoryPort">
> <soap:address location="
> http://localhost:9080/jaxws-wsdlfaults2/InventoryService"></soap:address>
> </port>
> </service>
> <service name="InventoryProvider">
> <port binding="tns:InventoryBinding" name="InventoryProviderPort">
> <soap:address location="/InventoryProvider"></soap:address>
> </port>
> </service>