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 <[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
