bloritsch 2003/03/13 06:12:10
Modified: src/java/org/apache/cocoon Cocoon.java
Log:
put the CommandManager back in the Cocoon object
Revision Changes Path
1.4 +41 -2 cocoon-2.1/src/java/org/apache/cocoon/Cocoon.java
Index: Cocoon.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/java/org/apache/cocoon/Cocoon.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Cocoon.java 12 Mar 2003 15:35:22 -0000 1.3
+++ Cocoon.java 13 Mar 2003 14:11:59 -0000 1.4
@@ -62,10 +62,13 @@
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.configuration.SAXConfigurationHandler;
+import org.apache.avalon.framework.container.ContainerUtil;
import org.apache.avalon.framework.context.Context;
import org.apache.avalon.framework.context.ContextException;
import org.apache.avalon.framework.context.Contextualizable;
+import org.apache.avalon.framework.context.DefaultContext;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.framework.thread.ThreadSafe;
import org.apache.cocoon.components.CocoonComponentManager;
import org.apache.cocoon.components.EnvironmentStack;
@@ -79,6 +82,10 @@
import org.apache.cocoon.environment.Request;
import org.apache.cocoon.environment.Session;
import org.apache.cocoon.util.ClassUtils;
+import org.apache.excalibur.event.Queue;
+import org.apache.excalibur.event.command.CommandManager;
+import org.apache.excalibur.event.command.TPCThreadManager;
+import org.apache.excalibur.event.command.ThreadManager;
import org.apache.excalibur.instrument.InstrumentManageable;
import org.apache.excalibur.instrument.InstrumentManager;
import org.apache.excalibur.source.Source;
@@ -116,6 +123,8 @@
LogKitManageable,
InstrumentManageable {
+ private ThreadManager threads;
+
/** The application context */
private Context context;
@@ -186,7 +195,36 @@
*/
public void contextualize(Context context) throws ContextException {
if (this.context == null) {
- this.context = context;
+ this.context = new DefaultContext(context);
+
+ try
+ {
+ DefaultContext setup = (DefaultContext)this.context;
+ threads = new TPCThreadManager();
+ CommandManager commands = new CommandManager();
+
+ Parameters params = new Parameters();
+ params.setParameter("threads-per-processor", "1");
+ params.setParameter("sleep-time", "100");
+ params.setParameter("block-timeout", "1000");
+ params.setParameter("force-shutdown", "false");
+ params.makeReadOnly();
+
+ ContainerUtil.enableLogging(threads,
getLogger().getChildLogger("thread.manager"));
+ ContainerUtil.parameterize(threads, params);
+ ContainerUtil.initialize(threads);
+
+ threads.register(commands);
+
+ setup.put(Queue.ROLE, commands.getCommandSink());
+
+ setup.makeReadOnly();
+ }
+ catch (Exception e)
+ {
+ getLogger().error("Could not set up the Command Manager", e);
+ }
+
this.classpath = (String)context.get(Constants.CONTEXT_CLASSPATH);
this.workDir = (File)context.get(Constants.CONTEXT_WORK_DIR);
try {
@@ -467,6 +505,7 @@
this.componentManager.release((Component)this.xmlizer);
this.sourceResolver = null;
this.xmlizer = null;
+ ContainerUtil.dispose(threads);
this.componentManager.dispose();
this.disposed = true;
}