Bin Zhu created CXF-5407:
----------------------------

             Summary: WSDLManagerImpl.removeDefinition doesn't take effect
                 Key: CXF-5407
                 URL: https://issues.apache.org/jira/browse/CXF-5407
             Project: CXF
          Issue Type: Bug
    Affects Versions: 2.6.2
            Reporter: Bin Zhu


I was trying to invoke WSDLManagerImpl.removeDefinition to remove the WSDL 
cache in web service client side to avoid the invalid WSDL defination when the 
WSDL file for web service is server side changed. see more details in 
https://issues.apache.org/jira/browse/CXF-5216
I was using following code to to remove the cach:

            WSDLManager wsdlManager = bus.getExtension(WSDLManager.class);
            synchronized (wsdlManager) {
                Map<Object, Definition> map = wsdlManager.getDefinitions();

                if (!map.isEmpty() && url != null && 
map.containsKey(url.toString())) {
                    
wsdlManager.removeDefinition(wsdlManager.getDefinition(url.toString()));
                }
            }
But it is found the WSDLcache is not removed as expected later.

I tried to add more system out info in WSDLManagerImpl.removeDefinition and 
debug it and find the it didn't removed the WSDL definition definitionsMap.
This should not be "synchronized" issue since the object id for the defination 
is the same when I debug it. It should the the same object and it's 
unreasonalbe that the defination object is still in the definitionsMap after 
invoking definitionsMap.remove(o). Any ideas?

The added system out:

    public void removeDefinition(Definition wsdl) {
        synchronized (definitionsMap) {
            List<Object> keys = new ArrayList<Object>();
            for (Map.Entry<Object, Definition> e : definitionsMap.entrySet()) {
                if (e.getValue() == wsdl) {
                    keys.add(e.getKey());
                }
            }
            for (Object o : keys) {
                // Print contents of definitionsMap before remove the 
defination.
                System.out.println("--WSDLManagerImpl--map 
before----------->:"+definitionsMap);
                // Print removed the defination.               
                System.out.println("--WSDLManagerImpl--removed 
map----------->:"+definitionsMap.remove(o));
                // Print the contents of definitionsMap before remove the 
defination.  
                System.out.println("--WSDLManagerImpl--map 
after----------->:"+definitionsMap);
                schemaCacheMap.remove(o);
            }
        }
    }

Output:

//There is 1 defination for http://localhost:8010/MTOMTest/MTOMService?wsdl 
before removing
--WSDLManagerImpl--map 
before----------->:{http://localhost:8010/MTOMTest/MTOMService?wsdl=Definition: 
name={http://MTOMService/}MTOMService targetNamespace=http://MTOMService/
Types:
SchemaExtensibilityElement ({http://www.w3.org/2001/XMLSchema}schema):
required=null
element=[xs:schema: null]
Message: name={http://MTOMService/}getAttachment
Part: name=parameters
elementName={http://MTOMService/}getAttachment
Message: name={http://MTOMService/}getAttachmentResponse
Part: name=parameters
elementName={http://MTOMService/}getAttachmentResponse
PortType: name={http://MTOMService/}MTOMInter
Operation: name=getAttachment
style=REQUEST_RESPONSE,1
Input: name=getAttachment
Message: name={http://MTOMService/}getAttachment
Part: name=parameters
elementName={http://MTOMService/}getAttachment
Output: name=getAttachmentResponse
Message: name={http://MTOMService/}getAttachmentResponse
Part: name=parameters
elementName={http://MTOMService/}getAttachmentResponse
Binding: name={http://MTOMService/}MTOMServiceSoapBinding
PortType: name={http://MTOMService/}MTOMInter
Operation: name=getAttachment
style=REQUEST_RESPONSE,1
Input: name=getAttachment
Message: name={http://MTOMService/}getAttachment
Part: name=parameters
elementName={http://MTOMService/}getAttachment
Output: name=getAttachmentResponse
Message: name={http://MTOMService/}getAttachmentResponse
Part: name=parameters
elementName={http://MTOMService/}getAttachmentResponse
BindingOperation: name=getAttachment
BindingInput: name=getAttachment
SOAPBody ({http://schemas.xmlsoap.org/wsdl/soap/}body):
required=null
use=literal
BindingOutput: name=getAttachmentResponse
SOAPBody ({http://schemas.xmlsoap.org/wsdl/soap/}body):
required=null
use=literal
SOAPOperation ({http://schemas.xmlsoap.org/wsdl/soap/}operation):
required=null
soapActionURI=
style=document
SOAPBinding ({http://schemas.xmlsoap.org/wsdl/soap/}binding):
required=null
transportURI=http://schemas.xmlsoap.org/soap/http
style=document
Service: name={http://MTOMService/}MTOMService
Port: name=MTOMServicePort
Binding: name={http://MTOMService/}MTOMServiceSoapBinding
PortType: name={http://MTOMService/}MTOMInter
Operation: name=getAttachment
style=REQUEST_RESPONSE,1
Input: name=getAttachment
Message: name={http://MTOMService/}getAttachment
Part: name=parameters
elementName={http://MTOMService/}getAttachment
Output: name=getAttachmentResponse
Message: name={http://MTOMService/}getAttachmentResponse
Part: name=parameters
elementName={http://MTOMService/}getAttachmentResponse
BindingOperation: name=getAttachment
BindingInput: name=getAttachment
SOAPBody ({http://schemas.xmlsoap.org/wsdl/soap/}body):
required=null
use=literal
BindingOutput: name=getAttachmentResponse
SOAPBody ({http://schemas.xmlsoap.org/wsdl/soap/}body):
required=null
use=literal
SOAPOperation ({http://schemas.xmlsoap.org/wsdl/soap/}operation):
required=null
soapActionURI=
style=document
SOAPBinding ({http://schemas.xmlsoap.org/wsdl/soap/}binding):
required=null
transportURI=http://schemas.xmlsoap.org/soap/http
style=document
SOAPAddress ({http://schemas.xmlsoap.org/wsdl/soap/}address):
required=null
locationURI=http://localhost:8010/MTOMTest/MTOMService
UnknownExtensibilityElement ({http://www.w3.org/ns/ws-policy}Policy):
required=null
element=[wsp:Policy: null]}



//Print the removed defination
--WSDLManagerImpl--removed map----------->:Definition: 
name={http://MTOMService/}MTOMService targetNamespace=http://MTOMService/
Types:
SchemaExtensibilityElement ({http://www.w3.org/2001/XMLSchema}schema):
required=null
element=[xs:schema: null]
Message: name={http://MTOMService/}getAttachment
Part: name=parameters
elementName={http://MTOMService/}getAttachment
Message: name={http://MTOMService/}getAttachmentResponse
Part: name=parameters
elementName={http://MTOMService/}getAttachmentResponse
PortType: name={http://MTOMService/}MTOMInter
Operation: name=getAttachment
style=REQUEST_RESPONSE,1
Input: name=getAttachment
Message: name={http://MTOMService/}getAttachment
Part: name=parameters
elementName={http://MTOMService/}getAttachment
Output: name=getAttachmentResponse
Message: name={http://MTOMService/}getAttachmentResponse
Part: name=parameters
elementName={http://MTOMService/}getAttachmentResponse
Binding: name={http://MTOMService/}MTOMServiceSoapBinding
PortType: name={http://MTOMService/}MTOMInter
Operation: name=getAttachment
style=REQUEST_RESPONSE,1
Input: name=getAttachment
Message: name={http://MTOMService/}getAttachment
Part: name=parameters
elementName={http://MTOMService/}getAttachment
Output: name=getAttachmentResponse
Message: name={http://MTOMService/}getAttachmentResponse
Part: name=parameters
elementName={http://MTOMService/}getAttachmentResponse
BindingOperation: name=getAttachment
BindingInput: name=getAttachment
SOAPBody ({http://schemas.xmlsoap.org/wsdl/soap/}body):
required=null
use=literal
BindingOutput: name=getAttachmentResponse
SOAPBody ({http://schemas.xmlsoap.org/wsdl/soap/}body):
required=null
use=literal
SOAPOperation ({http://schemas.xmlsoap.org/wsdl/soap/}operation):
required=null
soapActionURI=
style=document
SOAPBinding ({http://schemas.xmlsoap.org/wsdl/soap/}binding):
required=null
transportURI=http://schemas.xmlsoap.org/soap/http
style=document
Service: name={http://MTOMService/}MTOMService
Port: name=MTOMServicePort
Binding: name={http://MTOMService/}MTOMServiceSoapBinding
PortType: name={http://MTOMService/}MTOMInter
Operation: name=getAttachment
style=REQUEST_RESPONSE,1
Input: name=getAttachment
Message: name={http://MTOMService/}getAttachment
Part: name=parameters
elementName={http://MTOMService/}getAttachment
Output: name=getAttachmentResponse
Message: name={http://MTOMService/}getAttachmentResponse
Part: name=parameters
elementName={http://MTOMService/}getAttachmentResponse
BindingOperation: name=getAttachment
BindingInput: name=getAttachment
SOAPBody ({http://schemas.xmlsoap.org/wsdl/soap/}body):
required=null
use=literal
BindingOutput: name=getAttachmentResponse
SOAPBody ({http://schemas.xmlsoap.org/wsdl/soap/}body):
required=null
use=literal
SOAPOperation ({http://schemas.xmlsoap.org/wsdl/soap/}operation):
required=null
soapActionURI=
style=document
SOAPBinding ({http://schemas.xmlsoap.org/wsdl/soap/}binding):
required=null
transportURI=http://schemas.xmlsoap.org/soap/http
style=document
SOAPAddress ({http://schemas.xmlsoap.org/wsdl/soap/}address):
required=null
locationURI=http://localhost:8010/MTOMTest/MTOMService
UnknownExtensibilityElement ({http://www.w3.org/ns/ws-policy}Policy):
required=null
element=[wsp:Policy: null]




//The WSDL defination for http://localhost:8010/MTOMTest/MTOMService?wsdl still 
exists after removing.
--WSDLManagerImpl--map 
after----------->:{http://localhost:8010/MTOMTest/MTOMService?wsdl=Definition: 
name={http://MTOMService/}MTOMService targetNamespace=http://MTOMService/
Types:
SchemaExtensibilityElement ({http://www.w3.org/2001/XMLSchema}schema):
required=null
element=[xs:schema: null]
Message: name={http://MTOMService/}getAttachment
Part: name=parameters
elementName={http://MTOMService/}getAttachment
Message: name={http://MTOMService/}getAttachmentResponse
Part: name=parameters
elementName={http://MTOMService/}getAttachmentResponse
PortType: name={http://MTOMService/}MTOMInter
Operation: name=getAttachment
style=REQUEST_RESPONSE,1
Input: name=getAttachment
Message: name={http://MTOMService/}getAttachment
Part: name=parameters
elementName={http://MTOMService/}getAttachment
Output: name=getAttachmentResponse
Message: name={http://MTOMService/}getAttachmentResponse
Part: name=parameters
elementName={http://MTOMService/}getAttachmentResponse
Binding: name={http://MTOMService/}MTOMServiceSoapBinding
PortType: name={http://MTOMService/}MTOMInter
Operation: name=getAttachment
style=REQUEST_RESPONSE,1
Input: name=getAttachment
Message: name={http://MTOMService/}getAttachment
Part: name=parameters
elementName={http://MTOMService/}getAttachment
Output: name=getAttachmentResponse
Message: name={http://MTOMService/}getAttachmentResponse
Part: name=parameters
elementName={http://MTOMService/}getAttachmentResponse
BindingOperation: name=getAttachment
BindingInput: name=getAttachment
SOAPBody ({http://schemas.xmlsoap.org/wsdl/soap/}body):
required=null
use=literal
BindingOutput: name=getAttachmentResponse
SOAPBody ({http://schemas.xmlsoap.org/wsdl/soap/}body):
required=null
use=literal
SOAPOperation ({http://schemas.xmlsoap.org/wsdl/soap/}operation):
required=null
soapActionURI=
style=document
SOAPBinding ({http://schemas.xmlsoap.org/wsdl/soap/}binding):
required=null
transportURI=http://schemas.xmlsoap.org/soap/http
style=document
Service: name={http://MTOMService/}MTOMService
Port: name=MTOMServicePort
Binding: name={http://MTOMService/}MTOMServiceSoapBinding
PortType: name={http://MTOMService/}MTOMInter
Operation: name=getAttachment
style=REQUEST_RESPONSE,1
Input: name=getAttachment
Message: name={http://MTOMService/}getAttachment
Part: name=parameters
elementName={http://MTOMService/}getAttachment
Output: name=getAttachmentResponse
Message: name={http://MTOMService/}getAttachmentResponse
Part: name=parameters
elementName={http://MTOMService/}getAttachmentResponse
BindingOperation: name=getAttachment
BindingInput: name=getAttachment
SOAPBody ({http://schemas.xmlsoap.org/wsdl/soap/}body):
required=null
use=literal
BindingOutput: name=getAttachmentResponse
SOAPBody ({http://schemas.xmlsoap.org/wsdl/soap/}body):
required=null
use=literal
SOAPOperation ({http://schemas.xmlsoap.org/wsdl/soap/}operation):
required=null
soapActionURI=
style=document
SOAPBinding ({http://schemas.xmlsoap.org/wsdl/soap/}binding):
required=null
transportURI=http://schemas.xmlsoap.org/soap/http
style=document
SOAPAddress ({http://schemas.xmlsoap.org/wsdl/soap/}address):
required=null
locationURI=http://localhost:8010/MTOMTest/MTOMService
UnknownExtensibilityElement ({http://www.w3.org/ns/ws-policy}Policy):
required=null
element=[wsp:Policy: null]}




--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to