Author: rmannibucau
Date: Thu Jun 21 13:42:20 2012
New Revision: 1352533

URL: http://svn.apache.org/viewvc?rev=1352533&view=rev
Log:
managing concurrency in LocalBeanProxyGeneratorImpl.createProxy

Modified:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/LocalBeanProxyGeneratorImpl.java

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/LocalBeanProxyGeneratorImpl.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/LocalBeanProxyGeneratorImpl.java?rev=1352533&r1=1352532&r2=1352533&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/LocalBeanProxyGeneratorImpl.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/proxy/LocalBeanProxyGeneratorImpl.java
 Thu Jun 21 13:42:20 2012
@@ -114,11 +114,18 @@ public class LocalBeanProxyGeneratorImpl
         } catch (Exception e) {
         }
 
-        try {
-            byte[] proxyBytes = generateProxy(clsToProxy, clsName);
-            return (Class<?>) defineClass.invoke(unsafe, proxyName, 
proxyBytes, 0, proxyBytes.length, clsToProxy.getClassLoader(), 
clsToProxy.getProtectionDomain());
-        } catch (Exception e) {
-            throw new InternalError(e.toString());
+        synchronized (LocalBeanProxyGeneratorImpl.class) { // it can be done 
by concurrent threads
+            try { // try it again
+                return cl.loadClass(proxyName);
+            } catch (Exception e) {
+            }
+
+            try {
+                byte[] proxyBytes = generateProxy(clsToProxy, clsName);
+                return (Class<?>) defineClass.invoke(unsafe, proxyName, 
proxyBytes, 0, proxyBytes.length, clsToProxy.getClassLoader(), 
clsToProxy.getProtectionDomain());
+            } catch (Exception e) {
+                throw new InternalError(e.toString());
+            }
         }
     }
 


Reply via email to