[ 
https://issues.apache.org/jira/browse/AXIS2-3011?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12515816
 ] 

Lin Sun commented on AXIS2-3011:
--------------------------------

Hi Dustin,

I am caching the configurationContext object.  Code is same as Jarek but doing 
that in geronimo (by extends the ClientConfigurationFactory).   We thought of 
doing that because we were not sure if this change will be accepted in axis2.   
But with that, I am running this "Two services cannot have same name."  I am 
thinking of the changes below in line 944 of EndpointDescriptionImpl.java

-                    axisSvc.setName(axisSvc.getName() + this.hashCode());
+                    axisSvc.setName(axisSvc.getName() + this.hashCode() + 
System.currentTimeMillis());

But I am not sure if that will introduce any other probs?

Lin

> ServiceDescription caching leads to memory leak
> -----------------------------------------------
>
>                 Key: AXIS2-3011
>                 URL: https://issues.apache.org/jira/browse/AXIS2-3011
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: jaxws
>            Reporter: Jarek Gawor
>            Assignee: Ann Robinson
>         Attachments: AXIS2-3011.patch
>
>
> The DescriptionFactoryImpl.createServiceDescription() function attempts to 
> cache/reuse the ServiceDescription objects and that leads to memory leaks.
> First, a Hashtable is used for the cache. That means, any ServiceDescription 
> created will always live in the cache and won't ever be reclaimed (and there 
> is no clear cache function). Some sort of WeakHashMap could help the problem 
> so that at least some unused ServiceDescription objects could be reclaimed. 
> Second, the createServiceDescription() uses the 
> DescriptionFactory.createClientConfigurationFactory().getClientConfigurationContext()
>  to get the client configuration context. It looks like by default the 
> ClientConfigurationFactory.getClientConfigurationContext() does NOT cache the 
> configuration context. Therefore, each call creates a new configuration 
> object. That means, that by default ServiceDescription will NOT be reused 
> since the configuration context object instance is used to determine if the 
> ServiceDescription should be reused or not (see DescriptionKey.equals() 
> function). 
> So, a simple program that calls createServiceDescription() repeatably in a 
> loop (with the same arguments) will quickly run out of memory. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to