Author: adrianc
Date: Sat Nov 16 01:30:56 2013
New Revision: 1542442
URL:
http://svn.apache.org/r1542442Log:
Replace DCL pattern with AtomicReference in JmsListenerFactory.
https://issues.apache.org/jira/browse/OFBIZ-4455Modified:
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) {