Author: adrianc Date: Sat Nov 16 01:39:06 2013 New Revision: 1542443 URL: http://svn.apache.org/r1542443 Log: Merged revision(s) 1542442 from ofbiz/trunk: Replace DCL pattern with AtomicReference in JmsListenerFactory.
https://issues.apache.org/jira/browse/OFBIZ-4455 Modified: ofbiz/branches/release13.07/ (props changed) ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/jms/JmsListenerFactory.java Propchange: ofbiz/branches/release13.07/ ------------------------------------------------------------------------------ Merged /ofbiz/trunk:r1542442 Modified: ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/jms/JmsListenerFactory.java URL: http://svn.apache.org/viewvc/ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/jms/JmsListenerFactory.java?rev=1542443&r1=1542442&r2=1542443&view=diff ============================================================================== --- ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/jms/JmsListenerFactory.java (original) +++ ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/jms/JmsListenerFactory.java Sat Nov 16 01:39:06 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) {

