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/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 -- Alessio Soldano Web Service Lead, JBoss
