RANGER-3342 : Need to make the Ranger embedded server work directory configurable
Issue:
Currently the work directory for Ranger embedded server is not configurable. Need to make the work directory configurable to a custom location so that user can customize if required.
Changes:
Added configuration to make the work directory configurable for the embedded server.
Testing:
Validated changes locally.
Signed-off-by: Nitin Galave <ni3galave@apache.org>
diff --git a/embeddedwebserver/src/main/java/org/apache/ranger/server/tomcat/EmbeddedServer.java b/embeddedwebserver/src/main/java/org/apache/ranger/server/tomcat/EmbeddedServer.java
index 1371682..d3b1084 100644
--- a/embeddedwebserver/src/main/java/org/apache/ranger/server/tomcat/EmbeddedServer.java
+++ b/embeddedwebserver/src/main/java/org/apache/ranger/server/tomcat/EmbeddedServer.java
@@ -37,15 +37,16 @@
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.apache.catalina.Context;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.connector.Connector;
+import org.apache.catalina.core.StandardContext;
import org.apache.catalina.startup.Tomcat;
import org.apache.catalina.valves.AccessLogValve;
import org.apache.catalina.valves.ErrorReportValve;
import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.security.SecureClientLogin;
import org.apache.log4j.PropertyConfigurator;
+
import org.apache.ranger.credentialapi.CredentialReader;
import javax.net.ssl.KeyManager;
@@ -259,8 +260,17 @@
}
LOG.info("Adding webapp [" + webContextName + "] = path ["
+ webapp_dir + "] .....");
- Context webappCtx = server.addWebapp(webContextName, new File(
- webapp_dir).getAbsolutePath());
+ StandardContext webappCtx = (StandardContext) server.addWebapp(webContextName, new File(
+ webapp_dir).getAbsolutePath());
+ String workDirPath = EmbeddedServerUtil.getConfig("ranger.tomcat.work.dir", "");
+ if (!workDirPath.isEmpty() && new File(workDirPath).exists()) {
+ webappCtx.setWorkDir(workDirPath);
+ } else {
+ if (LOG.getLevel().equals(Level.FINE)) {
+ LOG.fine("Skipping to set tomcat server work directory, '" + workDirPath +
+ "', as it is blank or directory does not exist.");
+ }
+ }
webappCtx.init();
LOG.info("Finished init of webapp [" + webContextName
+ "] = path [" + webapp_dir + "].");
diff --git a/security-admin/src/main/resources/conf.dist/ranger-admin-default-site.xml b/security-admin/src/main/resources/conf.dist/ranger-admin-default-site.xml
index 8842071..5ffeb02 100644
--- a/security-admin/src/main/resources/conf.dist/ranger-admin-default-site.xml
+++ b/security-admin/src/main/resources/conf.dist/ranger-admin-default-site.xml
@@ -615,4 +615,8 @@
<name>ranger.default.browser-useragents</name>
<value>Mozilla,Opera,Chrome</value>
</property>
+ <property>
+ <name>ranger.tomcat.work.dir</name>
+ <value></value>
+ </property>
</configuration>