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: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org