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

Reply via email to