Hi Bin, just read your message (Friday was bank holiday here). I'll check your patch and improve my fix to cover your scenario too. Will create a new jira and link to the current one, as the release process for 2.7.1 has been started in the meantime. Cheers Alessio
On 12/07/2012 09:28 AM, Bin Zhu wrote: > Hi Alessio, > > I've attached the patch here > https://issues.apache.org/jira/secure/attachment/12559830/CXF-4677.patch > Can you help review it? Thanks. > > > 2012/12/6 Alessio Soldano <[email protected]> > >> Hi Bin, >> ok, either commit or attach an additional patch to CXF-4677 jira and let >> me review before the upcoming release ;-) >> >> Alessio >> >> On 12/06/2012 08:23 AM, Bin Zhu wrote: >>> 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 >>>> >>> >> >> >> -- >> Alessio Soldano >> Web Service Lead, JBoss >> > -- Alessio Soldano Web Service Lead, JBoss
