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/plugins/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.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

Reply via email to