You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2001/07/23 05:14:46 UTC
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup BootstrapService.java
remm 01/07/22 20:14:46
Modified: catalina/src/share/org/apache/catalina/startup
BootstrapService.java
Log:
- Implement Service interface.
- The legacy static methods are still there until JavaService is modifieded to
use the Service interface instead, but it will be removed when it's done.
Revision Changes Path
1.3 +142 -5 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/BootstrapService.java
Index: BootstrapService.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/BootstrapService.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- BootstrapService.java 2001/07/22 20:25:13 1.2
+++ BootstrapService.java 2001/07/23 03:14:46 1.3
@@ -1,7 +1,7 @@
/*
- * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/BootstrapService.java,v 1.2 2001/07/22 20:25:13 pier Exp $
- * $Revision: 1.2 $
- * $Date: 2001/07/22 20:25:13 $
+ * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/startup/BootstrapService.java,v 1.3 2001/07/23 03:14:46 remm Exp $
+ * $Revision: 1.3 $
+ * $Date: 2001/07/23 03:14:46 $
*
* ====================================================================
*
@@ -71,6 +71,8 @@
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
+import org.apache.service.Service;
+import org.apache.service.ServiceController;
import org.apache.catalina.loader.Extension;
import org.apache.catalina.loader.StandardClassLoader;
@@ -84,10 +86,11 @@
*
* @author Craig R. McClanahan
* @author Remy Maucherat
- * @version $Revision: 1.2 $ $Date: 2001/07/22 20:25:13 $
+ * @version $Revision: 1.3 $ $Date: 2001/07/23 03:14:46 $
*/
-public final class BootstrapService {
+public final class BootstrapService
+ implements Service {
// ------------------------------------------------------- Static Variables
@@ -103,6 +106,140 @@
* Catalina instance.
*/
private static Object catalina = null;
+
+
+ /**
+ * Catalina service.
+ */
+ private Object catalinaService = null;
+
+
+ // -------------------------------------------------------- Service Methods
+
+
+ /**
+ * Load the Catalina Service.
+ */
+ public void load(ServiceController controller, String arguments[])
+ throws Throwable {
+
+ System.out.println("Create Catalina server");
+
+ // Construct the class loaders we will need
+ ClassLoader commonLoader = createCommonLoader();
+ ClassLoader catalinaLoader =
+ createCatalinaLoader(commonLoader);
+ ClassLoader sharedLoader = createSharedLoader(commonLoader);
+
+ Thread.currentThread().setContextClassLoader(catalinaLoader);
+
+ // Load our startup class and call its process() method
+
+ if( System.getSecurityManager() != null ) {
+ // Pre load some classes required for SecurityManager
+ // so that defineClassInPackage does not throw a
+ // security exception.
+ String basePackage = "org.apache.catalina.";
+ catalinaLoader.loadClass
+ (basePackage +
+ "core.ApplicationContext$PrivilegedGetRequestDispatcher");
+ catalinaLoader.loadClass
+ (basePackage +
+ "core.ApplicationContext$PrivilegedGetResource");
+ catalinaLoader.loadClass
+ (basePackage +
+ "core.ApplicationContext$PrivilegedGetResourcePaths");
+ catalinaLoader.loadClass
+ (basePackage +
+ "core.ApplicationContext$PrivilegedLogMessage");
+ catalinaLoader.loadClass
+ (basePackage +
+ "core.ApplicationContext$PrivilegedLogException");
+ catalinaLoader.loadClass
+ (basePackage +
+ "core.ApplicationContext$PrivilegedLogThrowable");
+ catalinaLoader.loadClass
+ (basePackage +
+ "core.ApplicationDispatcher$PrivilegedForward");
+ catalinaLoader.loadClass
+ (basePackage +
+ "core.ApplicationDispatcher$PrivilegedInclude");
+ catalinaLoader.loadClass
+ (basePackage +
+ "connector.HttpRequestBase$PrivilegedGetSession");
+ catalinaLoader.loadClass
+ (basePackage +
+ "loader.WebappClassLoader$PrivilegedFindResource");
+ catalinaLoader.loadClass
+ (basePackage + "session.StandardSession");
+ catalinaLoader.loadClass
+ (basePackage + "util.CookieTools");
+ catalinaLoader.loadClass(basePackage + "util.Enumerator");
+ catalinaLoader.loadClass("javax.servlet.http.Cookie");
+ }
+
+ // Instantiate a startup class instance
+ if (debug >= 1)
+ log("Loading startup class");
+ Class startupClass =
+ catalinaLoader.loadClass
+ ("org.apache.catalina.startup.CatalinaService");
+ Object startupInstance = startupClass.newInstance();
+
+ // Set the shared extensions class loader
+ if (debug >= 1)
+ log("Setting startup class properties");
+ String methodName = "setParentClassLoader";
+ Class paramTypes[] = new Class[1];
+ paramTypes[0] = Class.forName("java.lang.ClassLoader");
+ Object paramValues[] = new Object[1];
+ paramValues[0] = sharedLoader;
+ Method method =
+ startupInstance.getClass().getMethod(methodName, paramTypes);
+ method.invoke(startupInstance, paramValues);
+
+ catalinaService = startupInstance;
+
+ // Call the load() method
+ if (debug >= 1)
+ log("Calling startup class load() method");
+ methodName = "load";
+ method = catalinaService.getClass().getMethod(methodName, null);
+ method.invoke(catalinaService, null);
+
+ }
+
+
+ /**
+ * Start the Catalina Service.
+ */
+ public void start()
+ throws Throwable {
+
+ // Call the start() method
+ if (debug >= 1)
+ log("Calling startup class start() method");
+ String methodName = "start";
+ Method method = catalinaService.getClass().getMethod(methodName, null);
+ method.invoke(catalinaService, null);
+
+ }
+
+
+ /**
+ * Stop the Catalina Service.
+ */
+ public void stop()
+ throws Throwable {
+
+ // Call the stop() method
+ if (debug >= 1)
+ log("Calling startup class stop() method");
+ String methodName = "stop";
+ Method method = catalinaService.getClass().getMethod(methodName, null);
+ method.invoke(catalinaService, null);
+
+ }
// ----------------------------------------------------------- Main Program