dims 01/05/22 12:23:20
Modified: lib xalan-2.0.1.jar
src/org/apache/cocoon/servlet CocoonServlet.java
ParanoidCocoonServlet.java
src/org/apache/cocoon/sitemap Handler.java
Log:
Get Cocoon working out of the box in ServletExec 3.1. Just drop the
cocoon.war in \servletexec\webapps\default directory and restart the
server(s). You do not need to make any changes (cocoon.xconf etc), just
use the everything from cvs as-is.
Revision Changes Path
1.3 +2348 -2496xml-cocoon2/lib/xalan-2.0.1.jar
<<Binary file>>
1.3 +34 -12
xml-cocoon2/src/org/apache/cocoon/servlet/CocoonServlet.java
Index: CocoonServlet.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/servlet/CocoonServlet.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- CocoonServlet.java 2001/05/15 20:27:51 1.2
+++ CocoonServlet.java 2001/05/22 19:23:05 1.3
@@ -57,7 +57,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Nicola Ken Barozzi</a> Aisa
* @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a>
- * @version CVS $Revision: 1.2 $ $Date: 2001/05/15 20:27:51 $
+ * @version CVS $Revision: 1.3 $ $Date: 2001/05/22 19:23:05 $
*/
public class CocoonServlet extends HttpServlet {
@@ -80,6 +80,7 @@
private File uploadDir;
protected ServletContext servletContext;
+ protected RepositoryClassLoader classLoader;
/**
* Initialize this <code>CocoonServlet</code> instance. You will
@@ -98,18 +99,18 @@
super.init(conf);
+ classLoader = buildInitClassLoader();
+
/* HACK for reducing class loader problems.
*/
/* example: xalan extensions fail if someone adds xalan jars in
tomcat3.2.1/lib */
try {
- if(Thread.currentThread().getContextClassLoader() !=
this.getClass().getClassLoader())
-
Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
+ Thread.currentThread().setContextClassLoader(classLoader);
} catch (Exception e){}
- ClassLoader classloader = buildInitClassLoader();
this.servletContext = conf.getServletContext();
- ClassUtils.setClassLoader(classloader);
- this.appContext.put(Constants.CONTEXT_CLASS_LOADER, classloader);
+ ClassUtils.setClassLoader(classLoader);
+ this.appContext.put(Constants.CONTEXT_CLASS_LOADER, classLoader);
this.appContext.put(Constants.CONTEXT_ENVIRONMENT_CONTEXT, new
HttpContext(this.servletContext));
this.initLogger(this.servletContext);
@@ -142,7 +143,8 @@
this.appContext.put(Constants.CONTEXT_CONFIG_URL,
this.getConfigFile(conf.getInitParameter("configurations"),
this.servletContext));
- this.appContext.put(Constants.CONTEXT_ROOT_PATH,
this.servletContext.getRealPath("/"));
+ if(this.servletContext.getRealPath("/") != null)
+ this.appContext.put(Constants.CONTEXT_ROOT_PATH,
this.servletContext.getRealPath("/"));
// get allow reload parameter, default is true
String value = conf.getInitParameter("allow-reload");
@@ -151,11 +153,11 @@
this.createCocoon();
}
- /**
- * get the classloader to use for Cocoon instantiation
- */
- protected ClassLoader buildInitClassLoader() {
- return this.getClass().getClassLoader();
+ /**
+ * get the classloader to use for Cocoon instantiation
+ */
+ protected RepositoryClassLoader buildInitClassLoader() {
+ return new RepositoryClassLoader(new URL[] {},
this.getClass().getClassLoader());
}
/**
@@ -177,10 +179,19 @@
protected String getClassPath(final ServletContext context)
throws ServletException {
StringBuffer buildClassPath = new StringBuffer();
+
+ if(context.getRealPath("/")==null)
+ return "";
+
String classDir = context.getRealPath("/WEB-INF/classes");
File root = new File(context.getRealPath("/WEB-INF/lib"));
buildClassPath.append(classDir);
+ try {
+ classLoader.addDirectory(new File(classDir));
+ } catch (Exception e) {
+ log.debug("Could not add directory" + classDir, e);
+ }
if (root.isDirectory()) {
File[] libraries = root.listFiles();
@@ -188,6 +199,11 @@
for (int i = 0; i < libraries.length; i++) {
buildClassPath.append(File.pathSeparatorChar)
.append(IOUtils.getFullFilename(libraries[i]));
+ try {
+ classLoader.addDirectory(libraries[i]);
+ } catch (Exception e) {
+ log.debug("Could not add file" +
IOUtils.getFullFilename(libraries[i]));
+ }
}
}
@@ -388,6 +404,12 @@
*/
public void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
+
+ /* HACK for reducing class loader problems.
*/
+ /* example: xalan extensions fail if someone adds xalan jars in
tomcat3.2.1/lib */
+ try {
+ Thread.currentThread().setContextClassLoader(classLoader);
+ } catch (Exception e){}
// This is more scalable
long start = new Date().getTime();
1.2 +3 -17
xml-cocoon2/src/org/apache/cocoon/servlet/ParanoidCocoonServlet.java
Index: ParanoidCocoonServlet.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/org/apache/cocoon/servlet/ParanoidCocoonServlet.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ParanoidCocoonServlet.java 2001/05/09 20:49:37 1.1
+++ ParanoidCocoonServlet.java 2001/05/22 19:23:07 1.2
@@ -17,7 +17,6 @@
import javax.servlet.ServletException;
import org.apache.avalon.framework.context.ContextException;
import org.apache.cocoon.Constants;
-import org.apache.cocoon.components.classloader.RepositoryClassLoader;
import org.apache.cocoon.util.IOUtils;
/**
@@ -29,18 +28,11 @@
* of it.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Berin Loritsch</a>
- * @version CVS $Revision: 1.1 $ $Date: 2001/05/09 20:49:37 $
+ * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 19:23:07 $
*/
public class ParanoidCocoonServlet extends CocoonServlet {
- /**
- * get the classloader to use for Cocoon instantiation
- */
- protected ClassLoader buildInitClassLoader() {
- return new RepositoryClassLoader(new URL[] {},
this.getClass().getClassLoader());
- }
-
/**
* This builds the important ClassPath used by this Servlet. It
* does so in a Servlet Engine neutral way. It uses the
@@ -59,12 +51,6 @@
*/
protected String getClassPath(final ServletContext context)
throws ServletException {
- RepositoryClassLoader classloader = null;
- try {
- classloader = (RepositoryClassLoader)
this.appContext.get(Constants.CONTEXT_CLASS_LOADER);
- } catch (ContextException e) {
- log.debug("ContextException in getClassPath", e);
- }
StringBuffer buildClassPath = new StringBuffer();
String classDirPath = getInitParameter("class-dir");
@@ -85,7 +71,7 @@
}
try {
- classloader.addDirectory(new File(classDir));
+ classLoader.addDirectory(new File(classDir));
} catch (Exception e) {
log.debug("Could not add directory" + classDir, e);
}
@@ -100,7 +86,7 @@
.append(IOUtils.getFullFilename(libraries[i]));
try {
- classloader.addDirectory(libraries[i]);
+ classLoader.addDirectory(libraries[i]);
} catch (Exception e) {
log.debug("Could not add file" +
IOUtils.getFullFilename(libraries[i]));
}
1.3 +2 -2 xml-cocoon2/src/org/apache/cocoon/sitemap/Handler.java
Index: Handler.java
===================================================================
RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/sitemap/Handler.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Handler.java 2001/05/22 14:45:20 1.2
+++ Handler.java 2001/05/22 19:23:16 1.3
@@ -39,7 +39,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Stefano Mazzocchi</a>
- * @version CVS $Revision: 1.2 $ $Date: 2001/05/22 14:45:20 $
+ * @version CVS $Revision: 1.3 $ $Date: 2001/05/22 19:23:16 $
*/
public class Handler extends AbstractLoggable implements Runnable,
Configurable, Composable, Contextualizable, Processor, Disposable {
private Context context;
@@ -138,7 +138,7 @@
/* HACK for reducing class loader problems.
*/
/* example: xalan extensions fail if someone adds xalan jars in
tomcat3.2.1/lib */
try {
-
regeneration.setContextClassLoader(this.getClass().getClassLoader());
+
regeneration.setContextClassLoader(Thread.currentThread().getContextClassLoader());
} catch (Exception e){}
this.environment = environment;
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]