please revert all the ThreadLocal.set(null) back to ThreadLocal.remove() because set(null) is known to produce memory leaks (That was actually the reason why remove() got introduced in jdk-1.5.
txs and LieGrue, strub ----- Ursprüngliche Mail ---- > Von: "gerdo...@apache.org" <gerdo...@apache.org> > An: comm...@openwebbeans.apache.org > Gesendet: Freitag, den 23. April 2010, 17:32:56 Uhr > Betreff: svn commit: r937336 - in > /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: > component/ conversation/ el/ portable/creation/ spi/se/ > > Author: gerdogdu Date: Fri Apr 23 15:32:55 2010 New Revision: > 937336 URL: > target=_blank > >http://svn.apache.org/viewvc?rev=937336&view=rev Log: Update while > running sample applications. Modified: > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java > > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java > > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java > > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java > > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java > > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java > > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java > > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java Modified: > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java URL: > > href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java?rev=937336&r1=937335&r2=937336&view=diff" > > target=_blank > >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java?rev=937336&r1=937335&r2=937336&view=diff ============================================================================== --- > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java > > (original) +++ > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java > > Fri Apr 23 15:32:55 2010 @@ -233,7 +233,7 @@ public abstract class > AbstractOwbBean<T> > e.printStackTrace(); }finally > { - > CreationalContextImpl.currentRemoveObject.remove(); + > > CreationalContextImpl.currentRemoveObject.set(null); > } } Modified: > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java URL: > > href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java?rev=937336&r1=937335&r2=937336&view=diff" > > target=_blank > >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java?rev=937336&r1=937335&r2=937336&view=diff ============================================================================== --- > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java > > (original) +++ > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionPointBean.java > > Fri Apr 23 15:32:55 2010 @@ -46,7 +46,7 @@ public class InjectionPointBean > extends > }finally { - > local.remove(); + > local.set(null); } > } Modified: > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java URL: > > href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java?rev=937336&r1=937335&r2=937336&view=diff" > > target=_blank > >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java?rev=937336&r1=937335&r2=937336&view=diff ============================================================================== --- > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java > > (original) +++ > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java > > Fri Apr 23 15:32:55 2010 @@ -263,7 +263,7 @@ public class > ProducerMethodBean<T> exten > } else > { - > > AbstractInjectable.dependentInstanceOfProducerMethods.remove(); + > > AbstractInjectable.dependentInstanceOfProducerMethods.set(null); > } } > Modified: > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java URL: > > href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java?rev=937336&r1=937335&r2=937336&view=diff" > > target=_blank > >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java?rev=937336&r1=937335&r2=937336&view=diff ============================================================================== --- > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java > > (original) +++ > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationImpl.java > > Fri Apr 23 15:32:55 2010 @@ -41,7 +41,7 @@ public class ConversationImpl > implements /**Transient or not. Transient conversations are > destroyed at the end of JSF request*/ private boolean > isTransient = true; - /**Default timeout is > 3mins*/ + /**Default timeout is 30mins*/ > private long timeout = 30 * 60 * 1000 ; /**Id of the > session that this conversation is created*/ @@ -61,6 +61,7 @@ public class > ConversationImpl implements */ public > ConversationImpl() { + > } /** @@ -72,7 +73,6 @@ public > class ConversationImpl implements { > Asserts.assertNotNull(sessionId); > this.sessionId = sessionId; - } > /** Modified: > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java URL: > > href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java?rev=937336&r1=937335&r2=937336&view=diff" > > target=_blank > >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java?rev=937336&r1=937335&r2=937336&view=diff ============================================================================== --- > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java > > (original) +++ > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java > > Fri Apr 23 15:32:55 2010 @@ -13,8 +13,8 @@ */ package > org.apache.webbeans.conversation; +import java.util.Collection; > import java.util.Iterator; -import java.util.Map; import > java.util.Set; import java.util.concurrent.ConcurrentHashMap; @@ > -76,19 +76,16 @@ public class ConversationManager > */ public boolean isConversationExistWithGivenId(String > conversationId) { - synchronized > (conversations) - { - > ConversationImpl conv = null; - > Set<Conversation> set = > conversations.keySet(); - > Iterator<Conversation> it = set.iterator(); + > ConversationImpl conv = null; + > Set<Conversation> set = conversations.keySet(); + > Iterator<Conversation> it = set.iterator(); - > while (it.hasNext()) + > while (it.hasNext()) + { + > conv = (ConversationImpl) it.next(); + > if (conv.getId().equals(conversationId)) > { - > conv = (ConversationImpl) it.next(); - > if > (conv.getId().equals(conversationId)) - > { - > return true; - > } + > return true; } > } @@ -210,6 +207,7 @@ public > class ConversationManager > { > ctx.destroy(); > } + > it.remove(); > } > } @@ -221,19 +219,16 @@ public class > ConversationManager */ public void > destroyAllConversations() { - > synchronized(conversations) + > Collection<ConversationContext> collection = > this.conversations.values(); + if(collection != > null && collection.size() > 0) > { - if (conversations != > null) + for (ConversationContext > context : collection) > { - > Map<Conversation, ConversationContext> oldConversations = > conversations; - > conversations = new ConcurrentHashMap<Conversation, > ConversationContext>(); - > - for > (ConversationContext ctx : oldConversations.values()) - > { - > ctx.destroy(); - > } - > conversations.clear(); - > } + > context.destroy(); + } > } + > + //Clear conversations + > conversations.clear(); } > } Modified: > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java URL: > > href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java?rev=937336&r1=937335&r2=937336&view=diff" > > target=_blank > >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java?rev=937336&r1=937335&r2=937336&view=diff ============================================================================== --- > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java > > (original) +++ > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java > > Fri Apr 23 15:32:55 2010 @@ -99,7 +99,7 @@ public class WebBeansELResolver > extends > if(!oldContext.equals(context)) > { > store.destroy(); - > LOCAL_CONTEXT.remove(); + > > LOCAL_CONTEXT.set(null); > } > else > { Modified: > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java URL: > > href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java?rev=937336&r1=937335&r2=937336&view=diff" > > target=_blank > >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java?rev=937336&r1=937335&r2=937336&view=diff ============================================================================== --- > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java > > (original) +++ > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java > > Fri Apr 23 15:32:55 2010 @@ -88,7 +88,7 @@ public class > InjectionTargetProducer<T> > } else > { - > AbstractInjectable.instanceUnderInjection.remove(); + > > AbstractInjectable.instanceUnderInjection.set(null); > } } > Modified: > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java URL: > > href="http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java?rev=937336&r1=937335&r2=937336&view=diff" > > target=_blank > >http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java?rev=937336&r1=937335&r2=937336&view=diff ============================================================================== --- > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java > > (original) +++ > openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java > > Fri Apr 23 15:32:55 2010 @@ -211,12 +211,12 @@ public class > DefaultContextsService exte @Override public > void destroy(Object destroyObject) { - > requestContext.remove(); - > sessionContext.remove(); - > applicationContext.remove(); - > conversationContext.remove(); - > dependentContext.remove(); - > singletonContext.remove(); + > requestContext.set(null); + > sessionContext.set(null); + > applicationContext.set(null); + > conversationContext.set(null); + > dependentContext.set(null); + > singletonContext.set(null); } >