[jboss-cvs] JBossAS SVN: r60379 - branches/Branch_4_0/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:06:50 EST 2007


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

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

Modified: branches/Branch_4_0/aspects/src/main/org/jboss/aop/deployment/JBossClassPoolFactory.java
===================================================================
--- branches/Branch_4_0/aspects/src/main/org/jboss/aop/deployment/JBossClassPoolFactory.java	2007-02-07 15:49:32 UTC (rev 60378)
+++ branches/Branch_4_0/aspects/src/main/org/jboss/aop/deployment/JBossClassPoolFactory.java	2007-02-07 16:06:50 UTC (rev 60379)
@@ -51,12 +51,20 @@
    }
    public ScopedClassPool create(ClassLoader cl, ClassPool src, ScopedClassPoolRepository repository)
    {
-      try
-      {
          if (cl instanceof RepositoryClassLoader)
          {
-            File tempdir = createTempDir(cl);
-            URL tmpCP = createURLAndAddToLoader(cl, tempdir);
+            File tempdir = getTempDirectory(cl);
+            
+            URL tmpCP;
+            try
+            {
+               tmpCP = createURLAndAddToLoader(cl, tempdir);
+            }
+            catch (IOException e)
+            {
+               // AutoGenerated
+               throw new RuntimeException(e);
+            }
             if (AspectManager.scopedCLHelper.ifScopedDeploymentGetScopedParentUclForCL(cl) != null)
             {
                //It is scoped
@@ -65,13 +73,34 @@
             return new JBossClassPool(cl, src, repository, tempdir, tmpCP);
          }
          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)
+      {
+         //Workaround for JBAOP-254, retry a few times
+         try
+         {
+            tempdir = createTempDir(cl);
+         }
+         catch (IOException e)
+         {
+            ex = e;
+         }
       }
-      catch (IOException e)
+      
+      if (tempdir == null)
       {
-         throw new RuntimeException(e);
+         throw new RuntimeException("", ex);
       }
+      
+      return tempdir;
    }
-
+   
    public ScopedClassPool create(ClassPool src, ScopedClassPoolRepository repository)
    {
       return new JBossClassPool(src, repository);




More information about the jboss-cvs-commits mailing list