Author: adrianc Date: Sat Nov 16 01:30:56 2013 New Revision: 1542442 URL: http://svn.apache.org/r1542442 Log: Replace DCL pattern with AtomicReference in JmsListenerFactory.
https://issues.apache.org/jira/browse/OFBIZ-4455 Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/jms/JmsListenerFactory.java Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/jms/JmsListenerFactory.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/jms/JmsListenerFactory.java?rev=1542442&r1=1542441&r2=1542442&view=diff ============================================================================== --- ofbiz/trunk/framework/service/src/org/ofbiz/service/jms/JmsListenerFactory.java (original) +++ ofbiz/trunk/framework/service/src/org/ofbiz/service/jms/JmsListenerFactory.java Sat Nov 16 01:30:56 2013 @@ -18,7 +18,13 @@ *******************************************************************************/ package org.ofbiz.service.jms; +import java.lang.reflect.Constructor; +import java.util.List; +import java.util.Map; +import java.util.concurrent.atomic.AtomicReference; + import javolution.util.FastMap; + import org.ofbiz.base.util.Debug; import org.ofbiz.base.util.UtilGenerics; import org.ofbiz.base.util.UtilMisc; @@ -29,10 +35,6 @@ import org.ofbiz.service.config.ServiceC import org.ofbiz.service.config.model.JmsService; import org.ofbiz.service.config.model.Server; -import java.lang.reflect.Constructor; -import java.util.List; -import java.util.Map; - /** * JmsListenerFactory */ @@ -46,7 +48,7 @@ public class JmsListenerFactory implemen protected static Map<String, GenericMessageListener> listeners = FastMap.newInstance(); protected static Map<String, Server> servers = FastMap.newInstance(); - protected static JmsListenerFactory jlf = null; + private static final AtomicReference<JmsListenerFactory> jlFactoryRef = new AtomicReference<JmsListenerFactory>(null); protected Delegator delegator; protected boolean firstPass = true; @@ -56,15 +58,14 @@ public class JmsListenerFactory implemen public static JmsListenerFactory getInstance(Delegator delegator){ - if (jlf == null) { - synchronized (JmsListenerFactory.class) { - if (jlf == null) { - jlf = new JmsListenerFactory(delegator); - } + JmsListenerFactory instance = jlFactoryRef.get(); + if (instance == null) { + instance = new JmsListenerFactory(delegator); + if (!jlFactoryRef.compareAndSet(null, instance)) { + instance = jlFactoryRef.get(); } } - - return jlf; + return instance; } public JmsListenerFactory(Delegator delegator) {

