Author: olamy
Date: Wed Jul 23 04:39:13 2014
New Revision: 1612761
URL: http://svn.apache.org/r1612761
Log:
Added a new parameter, “sessionManagerFactory”. If you specify a class that
implements a createSessionManager() function, this class will be called and
used to construct the session manager you want. This is useful for having your
standalone instance use the memcached-session-manager project.
Modified:
tomcat/maven-plugin/trunk/tomcat7-war-runner/src/main/java/org/apache/tomcat/maven/runner/Tomcat7Runner.java
tomcat/maven-plugin/trunk/tomcat7-war-runner/src/main/java/org/apache/tomcat/maven/runner/Tomcat7RunnerCli.java
Modified:
tomcat/maven-plugin/trunk/tomcat7-war-runner/src/main/java/org/apache/tomcat/maven/runner/Tomcat7Runner.java
URL:
http://svn.apache.org/viewvc/tomcat/maven-plugin/trunk/tomcat7-war-runner/src/main/java/org/apache/tomcat/maven/runner/Tomcat7Runner.java?rev=1612761&r1=1612760&r2=1612761&view=diff
==============================================================================
---
tomcat/maven-plugin/trunk/tomcat7-war-runner/src/main/java/org/apache/tomcat/maven/runner/Tomcat7Runner.java
(original)
+++
tomcat/maven-plugin/trunk/tomcat7-war-runner/src/main/java/org/apache/tomcat/maven/runner/Tomcat7Runner.java
Wed Jul 23 04:39:13 2014
@@ -18,38 +18,26 @@ package org.apache.tomcat.maven.runner;
* under the License.
*/
-import org.apache.catalina.Context;
-import org.apache.catalina.Host;
-import org.apache.catalina.connector.Connector;
-import org.apache.catalina.core.StandardContext;
-import org.apache.catalina.startup.Catalina;
-import org.apache.catalina.startup.ContextConfig;
-import org.apache.catalina.startup.Tomcat;
-import org.apache.catalina.valves.AccessLogValve;
-import org.apache.catalina.valves.RemoteIpValve;
-import org.apache.juli.ClassLoaderLogManager;
-import org.apache.tomcat.util.ExceptionUtils;
-import org.apache.tomcat.util.http.fileupload.FileUtils;
-
-import java.io.BufferedOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
+import java.io.*;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.URISyntaxException;
import java.net.URL;
import java.security.AccessController;
import java.security.PrivilegedAction;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-import java.util.StringTokenizer;
+import java.util.*;
import java.util.logging.LogManager;
+import org.apache.catalina.*;
+import org.apache.catalina.connector.Connector;
+import org.apache.catalina.core.StandardContext;
+import org.apache.catalina.startup.*;
+import org.apache.catalina.valves.AccessLogValve;
+import org.apache.catalina.valves.RemoteIpValve;
+import org.apache.juli.ClassLoaderLogManager;
+import org.apache.tomcat.util.ExceptionUtils;
+import org.apache.tomcat.util.http.fileupload.FileUtils;
+
/**
* FIXME add junit for that but when
https://issues.apache.org/bugzilla/show_bug.cgi?id=52028 fixed
* Main class used to run the standalone wars in a Apache Tomcat instance.
@@ -111,6 +99,8 @@ public class Tomcat7Runner
public String extractDirectory = ".extract";
public File extractDirectoryFile;
+
+ public String sessionManagerFactoryClassName = null;
public String codeSourceContextPath = null;
@@ -275,6 +265,11 @@ public class Tomcat7Runner
{
host.addChild( ctx );
}
+
+ if (sessionManagerFactoryClassName != null) {
+ boolean cookies = true;
+ constructSessionManager(ctx,
sessionManagerFactoryClassName, cookies);
+ }
return ctx;
}
@@ -323,7 +318,7 @@ public class Tomcat7Runner
tomcat.getHost().getPipeline().addValve(riv);
}
- // add a default acces log valve
+ // add a default access log valve
AccessLogValve alv = new AccessLogValve();
alv.setDirectory( new File( extractDirectory, "logs"
).getAbsolutePath() );
alv.setPattern( runtimeProperties.getProperty(
Tomcat7Runner.ACCESS_LOG_VALVE_FORMAT_KEY ) );
@@ -464,6 +459,31 @@ public class Tomcat7Runner
}
}
}
+
+ private void constructSessionManager(Context ctx, String
sessionManagerFactoryClassName, boolean cookies) {
+ try {
+ debugMessage("Constructing session manager with factory " +
sessionManagerFactoryClassName);
+ Class sessionManagerClass =
Class.forName(sessionManagerFactoryClassName);
+
+ Object managerFactory = (Object) sessionManagerClass.newInstance();
+
+ Method method =
managerFactory.getClass().getMethod("createSessionManager");
+ if (method != null) {
+ Manager manager = (Manager) method.invoke(managerFactory,
null);
+
+ ctx.setManager(manager);
+ ctx.setCookies(cookies);
+
+ } else {
+ System.out.print(sessionManagerFactoryClassName + " does not
have a method createSessionManager()");
+ }
+ } catch (Exception e) {
+ System.err.println("Unable to construct specified session manager
'" +
+ sessionManagerFactoryClassName + "': " +
e.getLocalizedMessage());
+ e.printStackTrace();
+ }
+ }
+
private URL getContextXml( String warPath )
throws IOException
Modified:
tomcat/maven-plugin/trunk/tomcat7-war-runner/src/main/java/org/apache/tomcat/maven/runner/Tomcat7RunnerCli.java
URL:
http://svn.apache.org/viewvc/tomcat/maven-plugin/trunk/tomcat7-war-runner/src/main/java/org/apache/tomcat/maven/runner/Tomcat7RunnerCli.java?rev=1612761&r1=1612760&r2=1612761&view=diff
==============================================================================
---
tomcat/maven-plugin/trunk/tomcat7-war-runner/src/main/java/org/apache/tomcat/maven/runner/Tomcat7RunnerCli.java
(original)
+++
tomcat/maven-plugin/trunk/tomcat7-war-runner/src/main/java/org/apache/tomcat/maven/runner/Tomcat7RunnerCli.java
Wed Jul 23 04:39:13 2014
@@ -87,6 +87,10 @@ public class Tomcat7RunnerCli
static Option extractDirectory = OptionBuilder.withArgName(
"extractDirectory" ).hasArg().withDescription(
"path to extract war content, default value: .extract" ).create(
"extractDirectory" );
+
+ static Option sessionManagerFactoryClassName = OptionBuilder.withArgName(
"className" ).hasArg().withDescription(
+ "classname of a factory that creates a session manager" ).create(
"sessionManagerFactory" );
+
static Option loggerName = OptionBuilder.withArgName( "loggerName"
).hasArg().withDescription(
"logger to use: slf4j to use slf4j bridge on top of jul" ).create(
"loggerName" );
@@ -101,7 +105,7 @@ public class Tomcat7RunnerCli
options.addOption( httpPort ).addOption( httpsPort ).addOption(
ajpPort ).addOption( serverXmlPath ).addOption(
resetExtract ).addOption( help ).addOption( debug ).addOption(
sysProps ).addOption(
httpProtocol ).addOption( clientAuth ).addOption( keyAlias
).addOption( obfuscate ).addOption(
- extractDirectory ).addOption( loggerName ).addOption( uriEncoding
).addOption( maxPostSize );
+ extractDirectory
).addOption(sessionManagerFactoryClassName).addOption( loggerName ).addOption(
uriEncoding );
}
@@ -206,6 +210,11 @@ public class Tomcat7RunnerCli
{
tomcat7Runner.extractDirectory = line.getOptionValue(
extractDirectory.getOpt() );
}
+
+ if ( line.hasOption( sessionManagerFactoryClassName.getOpt() ) )
+ {
+ tomcat7Runner.sessionManagerFactoryClassName =
line.getOptionValue( sessionManagerFactoryClassName.getOpt() );
+ }
if ( line.hasOption( loggerName.getOpt() ) )
{
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]