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 <[email protected]>
> 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:[email protected]]
> >> Sent: Mittwoch, 5. Dezember 2012 07:24
> >> To: [email protected]
> >> 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 <[email protected]>
> >>
> >>> 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:[email protected]]
> >>>>> Sent: Sonntag, 2. Dezember 2012 16:08
> >>>>> To: [email protected]
> >>>>> 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 <[email protected]>
> >>>>>
> >>>>>> 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:[email protected]]
> >>>>>>> Sent: Dienstag, 27. November 2012 07:30
> >>>>>>> To: [email protected]
> >>>>>>> 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
>