mcconnell 2002/07/24 14:24:25
Modified: sevak/src/java/org/apache/avalon/apps/sevak/blocks/catalina
CatalinaSevakImpl.java
Log:
moved startup from Initializable to Startable
Revision Changes Path
1.4 +71 -3
jakarta-avalon-apps/sevak/src/java/org/apache/avalon/apps/sevak/blocks/catalina/CatalinaSevakImpl.java
Index: CatalinaSevakImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-apps/sevak/src/java/org/apache/avalon/apps/sevak/blocks/catalina/CatalinaSevakImpl.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- CatalinaSevakImpl.java 24 Jul 2002 17:25:17 -0000 1.3
+++ CatalinaSevakImpl.java 24 Jul 2002 21:24:25 -0000 1.4
@@ -15,6 +15,7 @@
import org.apache.avalon.apps.sevak.SevakException;
import org.apache.avalon.apps.sevak.util.CatalinaLogger;
import org.apache.avalon.apps.sevak.util.CustomWebappLoader;
+import org.apache.avalon.framework.activity.Startable;
import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.configuration.Configurable;
import org.apache.avalon.framework.configuration.Configuration;
@@ -49,7 +50,7 @@
*/
public class CatalinaSevakImpl
extends AbstractLogEnabled
- implements Contextualizable, Serviceable, Configurable, Initializable, Sevak
+ implements Contextualizable, Serviceable, Configurable, Initializable,
Startable, Sevak
{
//private BlockContext m_context;
private Context m_context;
@@ -61,6 +62,22 @@
private int m_port;
private String m_host = null;
+ /**
+ * The thread that monitors stop requests from the container.
+ */
+ private Thread m_thread;
+
+ /**
+ * A flag used to trigger stop.
+ */
+ private boolean CONTINUE = false;
+
+ /**
+ * The period to sleep before checking for a stop request.
+ */
+ private int SLEEP_INTERVAL = 1000;
+
+
/**
* @see
org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
*/
@@ -105,9 +122,9 @@
//create the Logger
CatalinaLogger catalinaLogger = new CatalinaLogger();
- catalinaLogger.enableLogging(getLogger());
- //create the Custom ClassLoader
+ catalinaLogger.enableLogging( getLogger().getChildLogger("catalina") );
+ //create the Custom ClassLoader
m_catalinaCustomClassLoader =
new CustomWebappLoader(this.getClass().getClassLoader());
@@ -173,6 +190,35 @@
m_embedded.addEngine(m_engine);
m_embedded.addConnector(coyoteConnector);
+ getLogger().debug( "initialization complete" );
+ }
+
+ //=======================================================================
+ // Startable
+ //=======================================================================
+
+ /**
+ */
+ public void start() throws Exception
+ {
+ getLogger().debug( "starting" );
+ m_thread = new Thread(
+ new Runnable() {
+ public void run()
+ {
+ while( CONTINUE )
+ {
+ try
+ {
+ Thread.currentThread().sleep( SLEEP_INTERVAL );
+ }
+ catch( Throwable e )
+ {
+ }
+ }
+ }
+ }
+ );
//START Tomcat Instance
try
@@ -185,9 +231,31 @@
{
le.printStackTrace();
throw new ConfigurationException("[FATAL] Could Not START Tomcat ");
+ }
+
+ CONTINUE = true;
+ m_thread.start();
+ getLogger().debug( "started" );
+ }
+ /**
+ * Request to stop the service from the container.
+ */
+ public void stop()
+ {
+ getLogger().debug( "stopping" );
+ CONTINUE = false;
+ try
+ {
+ m_thread.join();
+ m_embedded.stop();
+ }
+ catch( Throwable e )
+ {
+ getLogger().warn("Unexpected error while reqesting stop.", e );
}
}
+
/**
* Deploy the given Web Application
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>