You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ga...@apache.org on 2012/10/01 20:10:24 UTC

svn commit: r1392490 - /geronimo/server/branches/3.0/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/Deployer.java

Author: gawor
Date: Mon Oct  1 18:10:24 2012
New Revision: 1392490

URL: http://svn.apache.org/viewvc?rev=1392490&view=rev
Log:
GERONIMO-6392: Copy module to a temporary file only on Windows by default

Modified:
    geronimo/server/branches/3.0/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/Deployer.java

Modified: geronimo/server/branches/3.0/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/Deployer.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/3.0/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/Deployer.java?rev=1392490&r1=1392489&r2=1392490&view=diff
==============================================================================
--- geronimo/server/branches/3.0/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/Deployer.java (original)
+++ geronimo/server/branches/3.0/framework/modules/geronimo-deployment/src/main/java/org/apache/geronimo/deployment/Deployer.java Mon Oct  1 18:10:24 2012
@@ -53,6 +53,7 @@ import org.apache.geronimo.kernel.config
 import org.apache.geronimo.kernel.config.ConfigurationUtil;
 import org.apache.geronimo.kernel.config.DeploymentWatcher;
 import org.apache.geronimo.kernel.config.InvalidConfigException;
+import org.apache.geronimo.kernel.config.Os;
 import org.apache.geronimo.kernel.repository.Artifact;
 import org.apache.geronimo.kernel.repository.ArtifactResolver;
 import org.apache.geronimo.kernel.util.FileUtils;
@@ -72,8 +73,10 @@ public class Deployer implements GBeanLi
     private static final Logger log = LoggerFactory.getLogger(Deployer.class);
 
     private final int REAPER_INTERVAL = 60 * 1000;
+    public static final String USE_TEMPORARY_MODULE_FILE_KEY = "org.apache.geronimo.deployer.useTemporaryModuleFile";
+    private final boolean USE_TEMPORARY_MODULE_FILE = getUseTemporaryModuleFile();
     public static final String CLEAN_UP_ON_START_KEY = "org.apache.geronimo.deployer.cleanupOnStart";
-    private final boolean CLEAN_UP_ON_START = System.getProperty(CLEAN_UP_ON_START_KEY) == null ? true : Boolean.getBoolean(CLEAN_UP_ON_START_KEY);
+    private final boolean CLEAN_UP_ON_START = getCleanUpOnStart();
     private DeployerReaper reaper;
     private final String remoteDeployAddress;
     private final Collection<ConfigurationBuilder> builders;
@@ -113,7 +116,7 @@ public class Deployer implements GBeanLi
         File originalModuleFile = moduleFile;
         File tmpDir = null;
         log.debug("Deployment start: module=" + originalModuleFile + ", plan=" + planFile + ", inPlace=" + inPlace);
-        if (moduleFile != null && !moduleFile.isDirectory()) {
+        if (moduleFile != null && moduleFile.isFile() && USE_TEMPORARY_MODULE_FILE) {
             // todo jar url handling with Sun's VM on Windows leaves a lock on the module file preventing rebuilds
             // to address this we use a gross hack and copy the file to a temporary directory
             // the lock on the file will prevent that being deleted properly until the URLJarFile has
@@ -135,6 +138,7 @@ public class Deployer implements GBeanLi
                     reaper.delete(tmpDir.getAbsolutePath(), "delete");
                 }
             }
+            log.debug("Using temporary file " + moduleFile + " for deployment of " + originalModuleFile + " module");
         }
 
         try {
@@ -152,6 +156,24 @@ public class Deployer implements GBeanLi
             }
         }
     }
+    
+    private static boolean getUseTemporaryModuleFile() {
+        String property = System.getProperty(USE_TEMPORARY_MODULE_FILE_KEY);
+        if (property == null) {
+            return Os.isFamily(Os.FAMILY_WINDOWS);
+        } else {
+            return Boolean.valueOf(property);
+        }
+    }
+    
+    private static boolean getCleanUpOnStart() {
+        String value = System.getProperty(CLEAN_UP_ON_START_KEY);
+        if (value == null) {
+            return true;
+        } else {
+            return Boolean.valueOf(value);
+        }
+    }
 
     /**
      * Gets a URL that a remote deploy client can use to upload files to the