[jboss-cvs] JBossAS SVN: r60380 - trunk/aspects/src/main/org/jboss/aop/deployment.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Feb 7 11:07:23 EST 2007


Author: kabir.khan at jboss.com
Date: 2007-02-07 11:07:23 -0500 (Wed, 07 Feb 2007)
New Revision: 60380

Modified:
   trunk/aspects/src/main/org/jboss/aop/deployment/JBossClassPoolFactory.java
Log:
[JBAOP-254] Add a few retries for the createTempDir() - "Access Is Denied" problem

Modified: trunk/aspects/src/main/org/jboss/aop/deployment/JBossClassPoolFactory.java
===================================================================
--- trunk/aspects/src/main/org/jboss/aop/deployment/JBossClassPoolFactory.java	2007-02-07 16:06:50 UTC (rev 60379)
+++ trunk/aspects/src/main/org/jboss/aop/deployment/JBossClassPoolFactory.java	2007-02-07 16:07:23 UTC (rev 60380)
@@ -51,25 +51,52 @@
    }
    public ScopedClassPool create(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
    {
-      try
+      if (cl instanceof RepositoryClassLoader)
       {
-         if (cl instanceof RepositoryClassLoader)
+         File tempdir = getTempDirectory(cl);
+         URL tmpCP;
+         try
          {
-            File tempdir = createTempDir(cl);
-            URL tmpCP = createURLAndAddToLoader(cl, tempdir);
-            if (AspectManager.scopedCLHelper.ifScopedDeploymentGetScopedParentUclForCL(cl) != null)
-            {
-               //It is scoped
-               return new ScopedJBossClassPool(cl, src, repository, tempdir, tmpCP);
-            }
-            return new JBossClassPool(cl, src, repository, tempdir, tmpCP);
+            tmpCP = createURLAndAddToLoader(cl, tempdir);
          }
-         return new AOPClassPool(cl, src, repository);
+         catch (IOException e)
+         {
+            throw new RuntimeException(e);
+         }
+         if (AspectManager.scopedCLHelper.ifScopedDeploymentGetScopedParentUclForCL(cl) != null)
+         {
+            //It is scoped
+            return new ScopedJBossClassPool(cl, src, repository, tempdir, tmpCP);
+         }
+         return new JBossClassPool(cl, src, repository, tempdir, tmpCP);
       }
-      catch (IOException e)
+      return new AOPClassPool(cl, src, repository);
+   }
+
+   private File getTempDirectory(ClassLoader cl)
+   {
+      File tempdir = null;
+      int attempts = 0;
+      IOException ex = null;
+      while (tempdir == null && attempts < 5)
       {
-         throw new RuntimeException(e);
+         //Workaround for JBAOP-254, retry a few times
+         try
+         {
+            tempdir = createTempDir(cl);
+         }
+         catch (IOException e)
+         {
+            ex = e;
+         }
       }
+      
+      if (tempdir == null)
+      {
+         throw new RuntimeException("", ex);
+      }
+      
+      return tempdir;
    }
 
    public ScopedClassPool create(ClassPool src, ScopedClassPoolRepository repository)




More information about the jboss-cvs-commits mailing list