[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