You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cxf.apache.org by Bin Zhu <lu...@gmail.com> on 2013/08/20 09:14:12 UTC

Re: [jira] [Commented] (CXF-5216) WSDL definition cache issue for web service client when WSDL in service war changed

 I should check if it's in cache by using  getDefinitions(), if yes,
then remove it. This will not increase any addition effort to get the
correct definition for the WSDL.
Thanks Freeman for all the help, it solved my problems.

2013/8/20, Freeman Fang (JIRA) <ji...@apache.org>:
>
>     [
> https://issues.apache.org/jira/browse/CXF-5216?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13744740#comment-13744740
> ]
>
> Freeman Fang commented on CXF-5216:
> -----------------------------------
>
> No, using code like
> {code}
> bus.getExtension(WSDLManager.class).removeDefinition(bus.getExtension(WSDLManager.class).getDefinition(url));
> {code}
>
> the wsdl would be loaded at most once, or zero if it's already in the cache.
> And you actually can check if it's already in the cache, as the WSDLManager
> has API like
> {code}
> public Map<Object, Definition> getDefinitions()
> {code}
>
> Freeman
>
>> WSDL definition cache issue for web service client when WSDL in service
>> war changed
>> -----------------------------------------------------------------------------------
>>
>>                 Key: CXF-5216
>>                 URL: https://issues.apache.org/jira/browse/CXF-5216
>>             Project: CXF
>>          Issue Type: Bug
>>    Affects Versions: 2.6.2
>>            Reporter: Bin Zhu
>>            Assignee: Freeman Fang
>>         Attachments: CXF-5216-2.patch, CXF-5216.patch
>>
>>
>> In current design, the WSDL definition will be cached in case the the same
>> wsdl will be queried later.(WSDLManagerImpl.getDefinition)
>> e.g.
>>     public Definition getDefinition(String url) throws WSDLException {
>>         synchronized (definitionsMap) {
>>             if (definitionsMap.containsKey(url)) {
>>                 return definitionsMap.get(url);
>>             }
>>         }
>>         return loadDefinition(url);
>>     }
>> The cache mechanism indeed improves the performance in most scenarios. But
>> if the WSDL file in service provider app changed, the client will not get
>> the correct WSDL definition even using retrieves the wsdl from server
>> dynamically (http://hostname:portname/xxx?wsdl),unless restarting the
>> client app.
>> It would be more reasonable to introduce a client property to allow user
>> to disable the definition cache so that they can choose if they get WSDL
>> definition from cache or the URL dynamically for their scenarios. Any
>> thoughts? Thanks.
>
> --
> This message is automatically generated by JIRA.
> If you think it was sent incorrectly, please contact your JIRA
> administrators
> For more information on JIRA, see: http://www.atlassian.com/software/jira
>