Author: kfujino
Date: Tue Apr 16 06:17:32 2013
New Revision: 1468311

URL: http://svn.apache.org/r1468311
Log:
Add support for specifying a pathname that is relative to the $CATALINA_BASE 
directory.

Modified:
    tomcat/trunk/java/org/apache/catalina/ha/deploy/FarmWarDeployer.java
    tomcat/trunk/webapps/docs/config/cluster-deployer.xml

Modified: tomcat/trunk/java/org/apache/catalina/ha/deploy/FarmWarDeployer.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/deploy/FarmWarDeployer.java?rev=1468311&r1=1468310&r2=1468311&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/ha/deploy/FarmWarDeployer.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/ha/deploy/FarmWarDeployer.java Tue 
Apr 16 06:17:32 2013
@@ -72,11 +72,23 @@ public class FarmWarDeployer extends Clu
     protected final HashMap<String, FileMessageFactory> fileFactories =
         new HashMap<>();
 
+    /**
+     * Deployment directory.
+     */
     protected String deployDir;
+    private File deployDirFile = null;
 
+    /**
+     * Temporary directory.
+     */
     protected String tempDir;
+    private File tempDirFile = null;
 
+    /**
+     * Watch directory. 
+     */
     protected String watchDir;
+    private File watchDirFile = null;
 
     protected boolean watchEnabled = false;
 
@@ -149,7 +161,7 @@ public class FarmWarDeployer extends Clu
             return;
         }
         if (watchEnabled) {
-            watcher = new WarWatcher(this, new File(getWatchDir()));
+            watcher = new WarWatcher(this, getWatchDirFile());
             if (log.isInfoEnabled()) {
                 log.info(sm.getString(
                         "farmWarDeployer.watchDir", getWatchDir()));
@@ -213,7 +225,7 @@ public class FarmWarDeployer extends Clu
                     String name = factory.getFile().getName();
                     if (!name.endsWith(".war"))
                         name = name + ".war";
-                    File deployable = new File(getDeployDir(), name);
+                    File deployable = new File(getDeployDirFile(), name);
                     try {
                         String contextName = fmsg.getContextName();
                         if (!isServiced(contextName)) {
@@ -284,7 +296,7 @@ public class FarmWarDeployer extends Clu
      */
     public synchronized FileMessageFactory getFactory(FileMessage msg)
             throws java.io.FileNotFoundException, java.io.IOException {
-        File writeToFile = new File(getTempDir(), msg.getFileName());
+        File writeToFile = new File(getTempDirFile(), msg.getFileName());
         FileMessageFactory factory = fileFactories.get(msg.getFileName());
         if (factory == null) {
             factory = FileMessageFactory.getInstance(writeToFile, true);
@@ -431,7 +443,7 @@ public class FarmWarDeployer extends Clu
     @Override
     public void fileModified(File newWar) {
         try {
-            File deployWar = new File(getDeployDir(), newWar.getName());
+            File deployWar = new File(getDeployDirFile(), newWar.getName());
             copy(newWar, deployWar);
             ContextName cn = new ContextName(deployWar.getName());
             if (log.isInfoEnabled())
@@ -593,6 +605,14 @@ public class FarmWarDeployer extends Clu
         return deployDir;
     }
 
+    public File getDeployDirFile() {
+        if (deployDirFile != null) return deployDirFile;
+
+        File dir = getAbsolutePath(getDeployDir());
+        this.deployDirFile = dir;
+        return dir;
+    }
+
     public void setDeployDir(String deployDir) {
         this.deployDir = deployDir;
     }
@@ -601,6 +621,14 @@ public class FarmWarDeployer extends Clu
         return tempDir;
     }
 
+    public File getTempDirFile() {
+        if (tempDirFile != null) return tempDirFile;
+
+        File dir = getAbsolutePath(getTempDir());
+        this.tempDirFile = dir;
+        return dir;
+    }
+
     public void setTempDir(String tempDir) {
         this.tempDir = tempDir;
     }
@@ -609,6 +637,14 @@ public class FarmWarDeployer extends Clu
         return watchDir;
     }
 
+    public File getWatchDirFile() {
+        if (watchDirFile != null) return watchDirFile;
+
+        File dir = getAbsolutePath(getWatchDir());
+        this.watchDirFile = dir;
+        return dir;
+    }
+
     public void setWatchDir(String watchDir) {
         this.watchDir = watchDir;
     }
@@ -682,4 +718,16 @@ public class FarmWarDeployer extends Clu
         return true;
     }
 
+    private File getAbsolutePath(String path) {
+        File dir = new File(path);
+        if (!dir.isAbsolute()) {
+            dir = new File(getCluster().getContainer().getCatalinaBase(),
+                    dir.getPath());
+        }
+        try {
+            dir = dir.getCanonicalFile();
+        } catch (IOException e) {// ignore
+        }
+        return dir;
+    }
 }

Modified: tomcat/trunk/webapps/docs/config/cluster-deployer.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/config/cluster-deployer.xml?rev=1468311&r1=1468310&r2=1468311&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/config/cluster-deployer.xml (original)
+++ tomcat/trunk/webapps/docs/config/cluster-deployer.xml Tue Apr 16 06:17:32 
2013
@@ -53,17 +53,22 @@
       </attribute>
       <attribute name="deployDir" required="true">
         Deployment directory. This is the pathname of a directory where deploy
-        the web applications. In the current implementation, this attribute 
must
-        be the same value as the <strong>Host's appBase</strong>.
+        the web applications. You may specify an absolute pathname, or a
+        pathname that is relative to the $CATALINA_BASE directory. In the
+        current implementation, this attribute must be the same value as the
+        <strong>Host's appBase</strong>.
       </attribute>
       <attribute name="tempDir" required="true">
         The temporaryDirectory to store binary data when downloading a war from
-        the cluster.
+        the cluster. You may specify an absolute pathname, or a pathname that 
is
+        relative to the $CATALINA_BASE directory.
       </attribute>
       <attribute name="watchDir" required="false">
         This is the pathname of a directory where watch for 
changes(add/modify/remove)
-        of web applications. <strong>Note: </strong> if 
<strong>watchEnabled</strong>
-        is false, this attribute will have no effect.
+        of web applications. You may specify an absolute pathname, or a 
pathname
+        that is relative to the $CATALINA_BASE directory.
+        <strong>Note: </strong> if <strong>watchEnabled</strong> is false, this
+        attribute will have no effect.
       </attribute>
       <attribute name="watchEnabled" required="false">
         Set to true if you want to watch for changes of web applications.



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to