cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bin Zhu <luckyzhu...@gmail.com>
Subject Re: service location in WSDL generated by CXF
Date Fri, 07 Dec 2012 08:28:50 GMT
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 <asoldano@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 <asoldano@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 <asoldano@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 <ashakirin@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
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message