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
