[145834] Since deploy directory is configurable, add a system property that identifies the location. It will be useful in catalina.policy file.
diff --git a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/ITomcatVersionHandler.java b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/ITomcatVersionHandler.java
index 13a2e5c..fc3b107 100644
--- a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/ITomcatVersionHandler.java
+++ b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/ITomcatVersionHandler.java
@@ -71,10 +71,11 @@
*
* @param installPath installation path for the server
* @param configPath configuration path for the server
+ * @param deployPath deploy path for the server
* @param isTestEnv test environment flag
* @return array of VM arguments for starting the server
*/
- public String[] getRuntimeVMArguments(IPath installPath, IPath configPath, boolean isTestEnv);
+ public String[] getRuntimeVMArguments(IPath installPath, IPath configPath, IPath deployPath, boolean isTestEnv);
/**
* Gets the contents of the Java policy file for the Tomcat server.
diff --git a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat32Handler.java b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat32Handler.java
index 3497eff..e74c049 100644
--- a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat32Handler.java
+++ b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat32Handler.java
@@ -82,11 +82,13 @@
}
/**
- * @see ITomcatVersionHandler#getRuntimeVMArguments(IPath, IPath, boolean)
+ * @see ITomcatVersionHandler#getRuntimeVMArguments(IPath, IPath, IPath, boolean)
*/
- public String[] getRuntimeVMArguments(IPath installPath, IPath configPath, boolean isTestEnv) {
+ public String[] getRuntimeVMArguments(IPath installPath, IPath configPath, IPath deployPath, boolean isTestEnv) {
List list = new ArrayList();
list.add("-Dtomcat.home=\"" + installPath.toOSString() + "\"");
+ // Include a system property for the configurable deploy location
+ list.add("-Dtomcat.deploy=\"" + deployPath.toOSString() + "\"");
String[] s = new String[list.size()];
list.toArray(s);
diff --git a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat40Handler.java b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat40Handler.java
index 6de5b3a..17ac0cb 100644
--- a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat40Handler.java
+++ b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat40Handler.java
@@ -82,15 +82,17 @@
}
/**
- * @see ITomcatVersionHandler#getRuntimeVMArguments(IPath, IPath, boolean)
+ * @see ITomcatVersionHandler#getRuntimeVMArguments(IPath, IPath, IPath, boolean)
*/
- public String[] getRuntimeVMArguments(IPath installPath, IPath configPath, boolean isTestEnv) {
+ public String[] getRuntimeVMArguments(IPath installPath, IPath configPath, IPath deployPath, boolean isTestEnv) {
List list = new ArrayList();
if (isTestEnv)
list.add("-Dcatalina.base=\"" + configPath.toOSString() + "\"");
else
list.add("-Dcatalina.base=\"" + installPath.toOSString() + "\"");
list.add("-Dcatalina.home=\"" + installPath.toOSString() + "\"");
+ // Include a system property for the configurable deploy location
+ list.add("-Dcatalina.deploy=\"" + deployPath.toOSString() + "\"");
String endorsed = installPath.append("bin").toOSString() +
installPath.append("common").append("lib").toOSString();
list.add("-Djava.endorsed.dirs=\"" + endorsed + "\"");
diff --git a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat41Handler.java b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat41Handler.java
index 248643b..cf5f4d6 100644
--- a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat41Handler.java
+++ b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat41Handler.java
@@ -82,20 +82,10 @@
}
/**
- * @see ITomcatVersionHandler#getRuntimeVMArguments(IPath, IPath, boolean)
+ * @see ITomcatVersionHandler#getRuntimeVMArguments(IPath, IPath, IPath, boolean)
*/
- public String[] getRuntimeVMArguments(IPath installPath, IPath configPath, boolean isTestEnv) {
- List list = new ArrayList();
- if (isTestEnv)
- list.add("-Dcatalina.base=\"" + configPath.toOSString() + "\"");
- else
- list.add("-Dcatalina.base=\"" + installPath.toOSString() + "\"");
- list.add("-Dcatalina.home=\"" + installPath.toOSString() + "\"");
- list.add("-Djava.endorsed.dirs=\"" + installPath.append("common").append("endorsed").toOSString() + "\"");
-
- String[] s = new String[list.size()];
- list.toArray(s);
- return s;
+ public String[] getRuntimeVMArguments(IPath installPath, IPath configPath, IPath deployPath, boolean isTestEnv) {
+ return TomcatVersionHelper.getCatalinaVMArguments(installPath, configPath, deployPath, isTestEnv);
}
/**
diff --git a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat50Handler.java b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat50Handler.java
index ed069fd..d577ea5 100644
--- a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat50Handler.java
+++ b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat50Handler.java
@@ -82,20 +82,10 @@
}
/**
- * @see ITomcatVersionHandler#getRuntimeVMArguments(IPath, IPath, boolean)
+ * @see ITomcatVersionHandler#getRuntimeVMArguments(IPath, IPath, IPath, boolean)
*/
- public String[] getRuntimeVMArguments(IPath installPath, IPath configPath, boolean isTestEnv) {
- List list = new ArrayList();
- if (isTestEnv)
- list.add("-Dcatalina.base=\"" + configPath.toOSString() + "\"");
- else
- list.add("-Dcatalina.base=\"" + installPath.toOSString() + "\"");
- list.add("-Dcatalina.home=\"" + installPath.toOSString() + "\"");
- list.add("-Djava.endorsed.dirs=\"" + installPath.append("common").append("endorsed").toOSString() + "\"");
-
- String[] s = new String[list.size()];
- list.toArray(s);
- return s;
+ public String[] getRuntimeVMArguments(IPath installPath, IPath configPath, IPath deployPath, boolean isTestEnv) {
+ return TomcatVersionHelper.getCatalinaVMArguments(installPath, configPath, deployPath, isTestEnv);
}
/**
diff --git a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat60Handler.java b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat60Handler.java
index 3aa61cd..c6eefbf 100644
--- a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat60Handler.java
+++ b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/Tomcat60Handler.java
@@ -76,20 +76,10 @@
}
/**
- * @see ITomcatVersionHandler#getRuntimeVMArguments(IPath, IPath, boolean)
+ * @see ITomcatVersionHandler#getRuntimeVMArguments(IPath, IPath, IPath, boolean)
*/
- public String[] getRuntimeVMArguments(IPath installPath, IPath configPath, boolean isTestEnv) {
- List list = new ArrayList();
- if (isTestEnv)
- list.add("-Dcatalina.base=\"" + configPath.toOSString() + "\"");
- else
- list.add("-Dcatalina.base=\"" + installPath.toOSString() + "\"");
- list.add("-Dcatalina.home=\"" + installPath.toOSString() + "\"");
- list.add("-Djava.endorsed.dirs=\"" + installPath.append("endorsed").toOSString() + "\"");
-
- String[] s = new String[list.size()];
- list.toArray(s);
- return s;
+ public String[] getRuntimeVMArguments(IPath installPath, IPath configPath, IPath deployPath, boolean isTestEnv) {
+ return TomcatVersionHelper.getCatalinaVMArguments(installPath, configPath, deployPath, isTestEnv);
}
/**
diff --git a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/TomcatServer.java b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/TomcatServer.java
index 8bb1354..3476538 100644
--- a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/TomcatServer.java
+++ b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/TomcatServer.java
@@ -235,6 +235,22 @@
return null;
}
+ /**
+ * Gets the directory to which modules should be deployed for
+ * this server.
+ *
+ * @return full path to deployment directory for the server
+ */
+ public IPath getServerDeployDirectory() {
+ String deployDir = getDeployDirectory();
+ IPath deployPath = new Path(deployDir);
+ if (!deployPath.isAbsolute()) {
+ IPath base = getRuntimeBaseDirectory();
+ deployPath = base.append(deployPath);
+ }
+ return deployPath;
+ }
+
protected static String renderCommandLine(String[] commandLine, String separator) {
if (commandLine == null || commandLine.length < 1)
return "";
diff --git a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/TomcatServerBehaviour.java b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/TomcatServerBehaviour.java
index 68f148e..b9607e1 100644
--- a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/TomcatServerBehaviour.java
+++ b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/TomcatServerBehaviour.java
@@ -126,7 +126,7 @@
IPath installPath = getServer().getRuntime().getLocation();
IPath configPath = getRuntimeBaseDirectory();
return getTomcatVersionHandler().getRuntimeVMArguments(installPath, configPath,
- getTomcatServer().isTestEnvironment());
+ getServerDeployDirectory(), getTomcatServer().isTestEnvironment());
}
protected String getRuntimePolicyFile() {
@@ -970,13 +970,7 @@
* @return full path to deployment directory for the server
*/
public IPath getServerDeployDirectory() {
- String deployDir = getTomcatServer().getDeployDirectory();
- IPath deployPath = new Path(deployDir);
- if (!deployPath.isAbsolute()) {
- IPath base = getRuntimeBaseDirectory();
- deployPath = base.append(deployPath);
- }
- return deployPath;
+ return getTomcatServer().getServerDeployDirectory();
}
/**
diff --git a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/TomcatVersionHelper.java b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/TomcatVersionHelper.java
index 7c4f305..7bff3f2 100644
--- a/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/TomcatVersionHelper.java
+++ b/plugins/org.eclipse.jst.server.tomcat.core/tomcatcore/org/eclipse/jst/server/tomcat/core/internal/TomcatVersionHelper.java
@@ -18,6 +18,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
@@ -136,6 +137,32 @@
// Return runtime path
return ts.getServer().getRuntime().getLocation();
}
+
+ /**
+ * Gets the startup VM arguments for the Catalina server.
+ *
+ * @param installPath installation path for the server
+ * @param instancePath instance path for the server
+ * @param deployPath deploy path for the server
+ * @param isTestEnv test environment flag
+ * @return array of strings containing VM arguments
+ */
+ public static String[] getCatalinaVMArguments(IPath installPath, IPath instancePath, IPath deployPath, boolean isTestEnv) {
+ List list = new ArrayList();
+ if (isTestEnv)
+ list.add("-Dcatalina.base=\"" + instancePath.toOSString() + "\"");
+ else
+ list.add("-Dcatalina.base=\"" + installPath.toOSString() + "\"");
+ list.add("-Dcatalina.home=\"" + installPath.toOSString() + "\"");
+ // Include a system property for the configurable deploy location
+ list.add("-Dcatalina.deploy=\"" + deployPath.toOSString() + "\"");
+ list.add("-Djava.endorsed.dirs=\"" + installPath.append("common").append("endorsed").toOSString() + "\"");
+
+ String[] s = new String[list.size()];
+ list.toArray(s);
+ return s;
+ }
+
/**
* Gets a ServerInstance for the specified server.xml, Service name,