You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cactus-dev@jakarta.apache.org by vm...@apache.org on 2004/01/18 12:03:05 UTC

cvs commit: jakarta-cactus/integration/ant/src/confs/share/resin2x resin.conf

vmassol     2004/01/18 03:03:05

  Modified:    integration/ant/src/java/org/apache/cactus/integration/ant/container
                        default.properties AbstractServerRun.java
               integration/ant/src/java/org/apache/cactus/integration/ant/container/enhydra
                        EnhydraRun.java
               integration/ant build.xml
               samples/servlet build.properties.sample
               documentation/docs/xdocs changes.xml
               .        build.properties.sample build.properties.vmassol
               integration/ant/src/java/org/apache/cactus/integration/ant/container/resin
                        Resin2xContainer.java ResinRun.java
                        AbstractResinContainer.java
               samples/servlet/src/scripts/j2ee12 build.properties
               samples/servlet/src/scripts/share build.xml
               samples/servlet/src/scripts/j2ee13 build.properties
               integration/ant/src/confs/share/resin2x resin.conf
  Added:       integration/ant/src/java/org/apache/cactus/integration/ant/container/resin
                        Resin3xContainer.java
               integration/ant/src/confs/share/resin3x app-default.xml
                        resin.conf
  Log:
  - Added support for Resin 3.x
  - Several refactorings performed to support Resin 3.x
  - Note that one test is not passing with Resin 3.x (testGetResponseAsStringMultiLines). We need to find out if this is because Resin 3.x has a bug or whether our test suite is buggy
  
  Revision  Changes    Path
  1.7       +1 -0      jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/container/default.properties
  
  Index: default.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/container/default.properties,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- default.properties	23 Nov 2003 18:26:51 -0000	1.6
  +++ default.properties	18 Jan 2004 11:03:04 -0000	1.7
  @@ -2,6 +2,7 @@
   orion1x = org.apache.cactus.integration.ant.container.orion.Orion1xContainer
   orion2x = org.apache.cactus.integration.ant.container.orion.Orion2xContainer
   resin2x = org.apache.cactus.integration.ant.container.resin.Resin2xContainer
  +resin3x = org.apache.cactus.integration.ant.container.resin.Resin3xContainer
   tomcat3x = org.apache.cactus.integration.ant.container.tomcat.Tomcat3xContainer
   tomcat4x = org.apache.cactus.integration.ant.container.tomcat.Tomcat4xContainer
   tomcat5x = org.apache.cactus.integration.ant.container.tomcat.Tomcat5xContainer
  
  
  
  1.4       +15 -6     jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/container/AbstractServerRun.java
  
  Index: AbstractServerRun.java
  ===================================================================
  RCS file: /home/cvs/jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/container/AbstractServerRun.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- AbstractServerRun.java	26 May 2003 09:43:00 -0000	1.3
  +++ AbstractServerRun.java	18 Jan 2004 11:03:04 -0000	1.4
  @@ -97,6 +97,11 @@
       private boolean isStarted = false;
   
       /**
  +     * Thread in which the server is running
  +     */
  +    private Thread runningServerThread;
  +    
  +    /**
        * @param theArgs the command line arguments
        */
       public AbstractServerRun(String[] theArgs)
  @@ -117,9 +122,13 @@
        * was started.
        *
        * @param theArgs the command line arguments
  +     * @param theRunningServerThread the thread in which the server is running.
  +     *        This is useful for example if there is no simple way to stop the
  +     *        server and thus you need to simply try to stop the running thread.
        * @exception Exception if any error happens when stopping the server
        */
  -    protected abstract void doStopServer(String[] theArgs) throws Exception;
  +    protected abstract void doStopServer(String[] theArgs,
  +        Thread theRunningServerThread) throws Exception;
   
       /**
        * Parse and process the command line to start/stop the server.
  @@ -188,11 +197,11 @@
               throw new RuntimeException("Error starting server");
           }
   
  -
           // Server is now started
           this.isStarted = true;
  -
  -        new Thread(this).start();
  +        
  +        this.runningServerThread = new Thread(this);
  +        this.runningServerThread.start();
       }
   
       /**
  @@ -264,7 +273,7 @@
           // Stop server
           try
           {
  -            this.doStopServer(this.args);
  +            this.doStopServer(this.args, this.runningServerThread);
           }
           catch (Exception e)
           {
  
  
  
  1.5       +3 -2      jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/container/enhydra/EnhydraRun.java
  
  Index: EnhydraRun.java
  ===================================================================
  RCS file: /home/cvs/jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/container/enhydra/EnhydraRun.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- EnhydraRun.java	26 May 2003 09:42:59 -0000	1.4
  +++ EnhydraRun.java	18 Jan 2004 11:03:04 -0000	1.5
  @@ -121,7 +121,8 @@
        * 
        * @see AbstractServerRun#doStopServer
        */
  -    protected final void doStopServer(String[] theArgs)
  +    protected final void doStopServer(String[] theArgs,
  +        Thread theRunningServerThread) throws Exception
       {
           try
           {
  
  
  
  1.50      +2 -1      jakarta-cactus/integration/ant/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-cactus/integration/ant/build.xml,v
  retrieving revision 1.49
  retrieving revision 1.50
  diff -u -r1.49 -r1.50
  --- build.xml	10 Dec 2003 20:25:16 -0000	1.49
  +++ build.xml	18 Jan 2004 11:03:04 -0000	1.50
  @@ -138,6 +138,7 @@
         <include name="orion1x/**/*.*"/>
         <include name="orion2x/**/*.*"/>
         <include name="resin2x/**/*.*"/>
  +      <include name="resin3x/**/*.*"/>
         <include name="tomcat4x/**/*.*"/>
         <include name="tomcat5x/**/*.*"/>
         <include name="weblogic6x/**/*.*"/>
  
  
  
  1.21      +2 -1      jakarta-cactus/samples/servlet/build.properties.sample
  
  Index: build.properties.sample
  ===================================================================
  RCS file: /home/cvs/jakarta-cactus/samples/servlet/build.properties.sample,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- build.properties.sample	9 Jan 2004 12:58:27 -0000	1.20
  +++ build.properties.sample	18 Jan 2004 11:03:04 -0000	1.21
  @@ -53,6 +53,7 @@
   #       tests on Resin 2.x, comment the "cactus.home.resin2x" property.
   
   #cactus.home.resin2x = c:/Apps/resin-2.1.11
  +#cactus.home.resin3x = c:/Apps/resin-3.0.5
   #cactus.home.tomcat3x = c:/Apps/jakarta-tomcat-3.3.1a
   #cactus.home.tomcat4x = c:/Apps/jakarta-tomcat-4.1.29
   #cactus.home.tomcat5x = c:/Apps/jakarta-tomcat-5.0.14
  
  
  
  1.154     +4 -0      jakarta-cactus/documentation/docs/xdocs/changes.xml
  
  Index: changes.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-cactus/documentation/docs/xdocs/changes.xml,v
  retrieving revision 1.153
  retrieving revision 1.154
  diff -u -r1.153 -r1.154
  --- changes.xml	16 Jan 2004 08:48:01 -0000	1.153
  +++ changes.xml	18 Jan 2004 11:03:04 -0000	1.154
  @@ -69,6 +69,10 @@
   
         <release version="1.6dev" date="in CVS">
           <action dev="VMA" type="add">
  +          Added support for Resin 3.x in the Ant integration. Note that
  +          Servlet API 2.4/JSP 2.0 are not yet supported by Cactus.
  +        </action>          
  +        <action dev="VMA" type="add">
             In the Ant integration, added new <code>contextxml</code> attributes
             to the <code>&lt;tomcat4x&gt;</code> nested elements of the 
             <code>&lt;cactus&gt;</code> task. This is to support the context xml 
  
  
  
  1.96      +2 -1      jakarta-cactus/build.properties.sample
  
  Index: build.properties.sample
  ===================================================================
  RCS file: /home/cvs/jakarta-cactus/build.properties.sample,v
  retrieving revision 1.95
  retrieving revision 1.96
  diff -u -r1.95 -r1.96
  --- build.properties.sample	9 Jan 2004 13:53:52 -0000	1.95
  +++ build.properties.sample	18 Jan 2004 11:03:05 -0000	1.96
  @@ -177,6 +177,7 @@
   #       tests on Resin 2.x, comment the "cactus.home.resin2x" property.
   
   #cactus.home.resin2x = c:/Apps/resin-2.1.11
  +#cactus.home.resin3x = c:/Apps/resin-3.0.5
   #cactus.home.tomcat3x = c:/Apps/jakarta-tomcat-3.3.1a
   #cactus.home.tomcat4x = c:/Apps/jakarta-tomcat-4.1.29
   #cactus.home.tomcat5x = c:/Apps/jakarta-tomcat-5.0.14
  
  
  
  1.6       +2 -1      jakarta-cactus/build.properties.vmassol
  
  Index: build.properties.vmassol
  ===================================================================
  RCS file: /home/cvs/jakarta-cactus/build.properties.vmassol,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- build.properties.vmassol	23 Nov 2003 18:12:16 -0000	1.5
  +++ build.properties.vmassol	18 Jan 2004 11:03:05 -0000	1.6
  @@ -163,6 +163,7 @@
   #       tests on Resin 2.x, comment the "cactus.home.resin2x" property.
   
   cactus.home.resin2x = c:/Apps/resin-2.1.11
  +#cactus.home.resin3x = c:/Apps/resin-3.0.5
   #cactus.home.tomcat3x = c:/Apps/jakarta-tomcat-3.3.1a
   #cactus.home.tomcat4x = c:/Apps/jakarta-tomcat-4.1.29
   #cactus.home.tomcat5x = c:/Apps/jakarta-tomcat-5.0.14
  
  
  
  1.9       +21 -1     jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/container/resin/Resin2xContainer.java
  
  Index: Resin2xContainer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/container/resin/Resin2xContainer.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Resin2xContainer.java	30 Nov 2003 10:22:22 -0000	1.8
  +++ Resin2xContainer.java	18 Jan 2004 11:03:05 -0000	1.9
  @@ -56,6 +56,10 @@
    */
   package org.apache.cactus.integration.ant.container.resin;
   
  +import org.apache.tools.ant.taskdefs.Java;
  +import org.apache.tools.ant.types.FilterChain;
  +import org.apache.tools.ant.types.Path;
  +
   /**
    * Special container support for the Caucho Resin 2.x servlet container.
    * 
  @@ -84,5 +88,21 @@
       protected final String getContainerDirName()
       {
           return "resin2x";
  +    }
  +
  +    /**
  +     * @see AbstractResinContainer#startUpAdditions(Java, Path)
  +     */
  +    protected void startUpAdditions(Java theJavaContainer, Path theClasspath)
  +    {
  +        // Nothing additional required
  +    }
  +
  +    /**
  +     * @see AbstractResinContainer#prepareAdditions(FilterChain)
  +     */
  +    protected void prepareAdditions(FilterChain theFilterChain)
  +    {
  +        // Nothing additional required
       }
   }
  
  
  
  1.5       +162 -34   jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/container/resin/ResinRun.java
  
  Index: ResinRun.java
  ===================================================================
  RCS file: /home/cvs/jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/container/resin/ResinRun.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ResinRun.java	26 May 2003 09:42:59 -0000	1.4
  +++ ResinRun.java	18 Jan 2004 11:03:05 -0000	1.5
  @@ -3,7 +3,7 @@
    *
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 2001-2003 The Apache Software Foundation.  All rights
  + * Copyright (c) 2001-2004 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -57,19 +57,20 @@
   package org.apache.cactus.integration.ant.container.resin;
   
   import java.lang.reflect.Constructor;
  +import java.lang.reflect.Field;
   import java.lang.reflect.Method;
   import java.util.ArrayList;
   
   import org.apache.cactus.integration.ant.container.AbstractServerRun;
   
   /**
  - * Starts/stop Resin by setting up a listener socket.
  + * Starts/stop Resin by setting up a listener socket. Supports Resin 2.0.x,
  + * 2.1.x and 3.x.
    *
    * @author <a href="mailto:vmassol@apache.org">Vincent Massol</a>
    * @author <a href="mailto:digital@ix.net.au">Robert Leftwich</a>
    *
    * @version $Id$
  - * @see AbstractServerRun
    */
   public class ResinRun extends AbstractServerRun
   {
  @@ -110,80 +111,207 @@
       {
           try
           {
  -            Class resinClass = 
  -                Class.forName("com.caucho.server.http.ResinServer");
  -            Constructor constructor = resinClass.getConstructor(
  -                new Class[] {theArgs.getClass(), boolean.class});
  -
  -            this.resinServer = constructor.newInstance(
  -                new Object[] {theArgs, Boolean.TRUE});
  -
  -            // Try Resin 2.0 first
  -            try
  +            if (isResinVersion("2.0"))
  +            {
  +                startResin20x(theArgs);
  +            }
  +            else if (isResinVersion("2.1"))
               {
  -                startResin20(this.resinServer);
  +                startResin21x(theArgs);
               }
  -            catch (NoSuchMethodException nsme)
  +            else if (isResinVersion("3"))
               {
  -                // Try Resin 2.1
  -                startResin21(this.resinServer);
  +                startResin3x(theArgs);
  +            }
  +            else
  +            {
  +                throw new RuntimeException("Unsupported Resin version ["
  +                    + getResinVersion() + "]");
               }
           }
           catch (Exception e)
           {
               e.printStackTrace();
  -            throw new RuntimeException("Cannot create instance of ResinServer");
  +            throw new RuntimeException("Failed to start Resin server");
           }
       }
   
       /**
        * Starts Resin 2.0.x
        *
  -     * @param theResinServer the <code>ResinServer</code> instance
  +     * @param theArgs the command line arguments for starting the server
        * @throws Exception if an error happens when starting the server
        */
  -    private void startResin20(Object theResinServer) throws Exception
  +    private void startResin20x(String[] theArgs) throws Exception
       {
  -        Method initMethod = theResinServer.getClass().getMethod("init", 
  +        Class resinClass = 
  +            Class.forName("com.caucho.server.http.ResinServer");
  +        Constructor constructor = resinClass.getConstructor(
  +            new Class[] {theArgs.getClass(), boolean.class});
  +
  +        this.resinServer = constructor.newInstance(
  +            new Object[] {theArgs, Boolean.TRUE});
  +    
  +        Method initMethod = this.resinServer.getClass().getMethod("init", 
               new Class[] {boolean.class});
   
  -        initMethod.invoke(theResinServer, new Object[] {Boolean.TRUE});
  +        initMethod.invoke(this.resinServer, new Object[] {Boolean.TRUE});
       }
   
       /**
        * Starts Resin 2.1.x
        *
  -     * @param theResinServer the <code>ResinServer</code> instance
  +     * @param theArgs the command line arguments for starting the server
        * @throws Exception if an error happens when starting the server
        */
  -    private void startResin21(Object theResinServer) throws Exception
  +    private void startResin21x(String[] theArgs) throws Exception
       {
  -        Method initMethod = theResinServer.getClass().getMethod("init",
  +        Class resinClass = 
  +            Class.forName("com.caucho.server.http.ResinServer");
  +        Constructor constructor = resinClass.getConstructor(
  +            new Class[] {theArgs.getClass(), boolean.class});
  +
  +        this.resinServer = constructor.newInstance(
  +            new Object[] {theArgs, Boolean.TRUE});
  +        
  +        Method initMethod = this.resinServer.getClass().getMethod("init",
               new Class[] {ArrayList.class});
   
  -        initMethod.invoke(theResinServer, new Object[] {null});
  +        initMethod.invoke(this.resinServer, new Object[] {null});
       }
   
       /**
  +     * Starts Resin 3.x
  +     *
  +     * @param theArgs the command line arguments for starting the server
  +     * @throws Exception if an error happens when starting the server
  +     */
  +    private void startResin3x(final String[] theArgs) throws Exception
  +    {
  +        // Start the server in another thread so that it doesn't block
  +        // the current thread. It seems that Resin 3.x is acting differently
  +        // than Resin 2.x which was not blocking and thus which did not need
  +        // to be started in a separate thread.
  +        Thread startThread = new Thread()
  +        {
  +            public void run()
  +            {
  +                try
  +                {
  +                    Class resinClass = 
  +                        Class.forName("com.caucho.server.http.ResinServer");
  +                    
  +                    Method mainMethod = resinClass.getMethod("main", 
  +                        new Class[] {String[].class});
  +                                
  +                    mainMethod.invoke(null, new Object[] {theArgs});
  +                }
  +                catch (Exception e)
  +                {
  +                    throw new RuntimeException(
  +                        "Failed to start Resin 3.x. Error = ["
  +                        + e.getMessage() + "]");
  +                }
  +            }
  +        };
  +        startThread.start();
  +    }
  +    
  +    /**
        * Stops the Resin server. We use reflection so that the Resin jars do not
        * need to be in the classpath to compile this class.
        * 
        * @see AbstractServerRun#doStopServer
        */
  -    protected final void doStopServer(String[] theArgs)
  +    protected final void doStopServer(String[] theArgs, 
  +        Thread theRunningServerThread)
       {
           try
           {
  -            Method closeMethod = this.resinServer.getClass().getMethod(
  -                "close", null);
  -
  -            closeMethod.invoke(this.resinServer, null);
  +            if (isResinVersion("2.0"))
  +            {
  +                stopResin20x(theArgs);
  +            }
  +            else if (isResinVersion("2.1"))
  +            {
  +                stopResin20x(theArgs);
  +            }
  +            else if (isResinVersion("3"))
  +            {
  +                stopResin3x(theArgs, theRunningServerThread);
  +            }
  +            else
  +            {
  +                throw new RuntimeException("Unsupported Resin version ["
  +                    + getResinVersion() + "]");
  +            }
           }
           catch (Exception e)
           {
               e.printStackTrace();
  -            throw new RuntimeException("Cannot stop running instance of "
  -                + "ResinServer");
  +            throw new RuntimeException(
  +                "Failed to stop the running Resin server");
  +        }
  +    }
  +    
  +    /**
  +     * Stops Resin 2.0.x and 2.1.x versions.
  +     *
  +     * @param theArgs the command line arguments for starting the server
  +     * @throws Exception if an error happens when starting the server
  +     */
  +    private void stopResin20x(String[] theArgs) throws Exception
  +    {
  +        Method closeMethod = this.resinServer.getClass().getMethod(
  +            "close", null);
  +
  +        closeMethod.invoke(this.resinServer, null);
  +    }
  +
  +    /**
  +     * Stops Resin 3.x.
  +     *
  +     * @param theArgs the command line arguments for starting the server
  +     * @param theRunningServerThread the thread in which the server is running
  +     * @throws Exception if an error happens when starting the server
  +     */
  +    private void stopResin3x(String[] theArgs,
  +        Thread theRunningServerThread) throws Exception
  +    {
  +        // As we don't know how to properly stop a running Resin server,
  +        // we simply try to kill the thread in which it is running. 
  +        // Not clean...
  +        theRunningServerThread.stop();
  +    }
  +    
  +    /**
  +     * @return the Resin version
  +     */
  +    private String getResinVersion()
  +    {
  +        String version;
  +        
  +        try
  +        {
  +            Class versionClass = Class.forName("com.caucho.Version");
  +            Field versionField = versionClass.getField("VERSION");
  +            version = (String) versionField.get(null);
  +        }
  +        catch (Exception e)
  +        {
  +            throw new RuntimeException("Cannot get Resin version. Error = ["
  +                + e.getMessage() + "]");
           }
  +
  +        return version;
  +    }
  +
  +    /**
  +     * @param theVersionPrefix the version prefix to test for
  +     * @return true if the Resin version starts with versionPrefix
  +     */
  +    private boolean isResinVersion(String theVersionPrefix)
  +    {
  +        return getResinVersion().startsWith(theVersionPrefix);
       }
   }
  
  
  
  1.2       +62 -12    jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/container/resin/AbstractResinContainer.java
  
  Index: AbstractResinContainer.java
  ===================================================================
  RCS file: /home/cvs/jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/container/resin/AbstractResinContainer.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AbstractResinContainer.java	30 Nov 2003 10:22:22 -0000	1.1
  +++ AbstractResinContainer.java	18 Jan 2004 11:03:05 -0000	1.2
  @@ -3,7 +3,7 @@
    *
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 2003 The Apache Software Foundation.  All rights
  + * Copyright (c) 2003-2004 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -80,7 +80,7 @@
       // Instance Variables ------------------------------------------------------
   
       /**
  -     * The Resin 2.x installation directory.
  +     * The Resin installation directory.
        */
       private File dir;
   
  @@ -114,7 +114,6 @@
   
       /**
        * Sets the configuration file to use for the test installation of Resin
  -     * 2.x.
        * 
        * @param theResinConf The resin.conf file
        */
  @@ -160,9 +159,9 @@
        */
       public final void init()
       {
  -        if (!this.dir.isDirectory())
  +        if (!getDir().isDirectory())
           {
  -            throw new BuildException(this.dir + " is not a directory");
  +            throw new BuildException(getDir() + " is not a directory");
           }
       }
   
  @@ -181,15 +180,19 @@
               Path classpath = java.createClasspath();
               classpath.createPathElement().setLocation(
                   ResourceUtils.getResourceLocation("/"
  -                    + ResinRun.class.getName().replace('.', '/') + ".class"));
  +                + ResinRun.class.getName().replace('.', '/') + ".class"));
               FileSet fileSet = new FileSet();
  -            fileSet.setDir(this.dir);
  +            fileSet.setDir(getDir());
               fileSet.createInclude().setName("lib/*.jar");
               classpath.addFileset(fileSet);
               java.setClassname(ResinRun.class.getName());
               java.createArg().setValue("-start");
               java.createArg().setValue("-conf");
               java.createArg().setFile(new File(tmpDir, "resin.conf"));
  +
  +            // Add settings specific to a given container version
  +            startUpAdditions(java, classpath);
  +            
               java.execute();
           }
           catch (IOException ioe)
  @@ -213,7 +216,7 @@
               ResourceUtils.getResourceLocation("/"
                   + ResinRun.class.getName().replace('.', '/') + ".class"));
           FileSet fileSet = new FileSet();
  -        fileSet.setDir(this.dir);
  +        fileSet.setDir(getDir());
           fileSet.createInclude().setName("lib/*.jar");
           classpath.addFileset(fileSet);
           java.setClassname(ResinRun.class.getName());
  @@ -221,7 +224,29 @@
           java.execute();
       }
       
  -    // Private Methods ---------------------------------------------------------
  +    // Protected Methods -------------------------------------------------------
  +
  +    /**
  +     * Allow specific version implementations to add custom settings to the 
  +     * Java container that will be started.
  +     * 
  +     * @param theJavaContainer the Ant Java object that will start the container
  +     * @param theClasspath the classpath that will be used to start the 
  +     *        container
  +     */
  +    protected abstract void startUpAdditions(Java theJavaContainer,
  +        Path theClasspath);
  +
  +    /**
  +     * Allow specific version implementations to add custom preparation steps
  +     * before the container is started.
  +     * 
  +     * @param theFilterChain the filter chain used to replace Ant tokens in 
  +     *        configuration
  +     * @exception IOException in case of an error
  +     */
  +    protected abstract void prepareAdditions(FilterChain theFilterChain)
  +        throws IOException;
   
       /**
        * @return the name of the directory where the container will be set up
  @@ -229,6 +254,25 @@
       protected abstract String getContainerDirName();
       
       /**
  +     * @return the directory where Resin is installed
  +     */
  +    protected final File getDir()
  +    {
  +        return this.dir;
  +    }
  +
  +    /**
  +     * @return The temporary directory from which the container will be 
  +     *         started.
  +     */
  +    protected final File getTmpDir()
  +    {
  +        return this.tmpDir;
  +    }
  +    
  +    // Private Methods ---------------------------------------------------------
  +
  +    /**
        * Prepares a temporary installation of the container and deploys the 
        * web-application.
        * 
  @@ -257,9 +301,15 @@
                   RESOURCE_PATH + getContainerDirName() + "/resin.conf",
                   new File(tmpDir, "resin.conf"), filterChain);
           }
  -            
  +
  +        // deploy the web-app by copying the WAR file into the webapps
  +        // directory
  +        File webappsDir = createDirectory(tmpDir, "webapps");
           fileUtils.copyFile(getDeployableFile().getFile(),
  -            new File(tmpDir, getDeployableFile().getFile().getName()), 
  +            new File(webappsDir, getDeployableFile().getFile().getName()), 
               null, true);
  +
  +        // Add preparation steps specific to a given container version
  +        prepareAdditions(filterChain);
       }
   }
  
  
  
  1.1                  jakarta-cactus/integration/ant/src/java/org/apache/cactus/integration/ant/container/resin/Resin3xContainer.java
  
  Index: Resin3xContainer.java
  ===================================================================
  /*
   * ====================================================================
   *
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2004 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Cactus" and "Apache Software
   *    Foundation" must not be used to endorse or promote products
   *    derived from this software without prior written permission. For
   *    written permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   */
  package org.apache.cactus.integration.ant.container.resin;
  
  import java.io.File;
  import java.io.IOException;
  
  import org.apache.cactus.integration.ant.util.ResourceUtils;
  import org.apache.tools.ant.taskdefs.Java;
  import org.apache.tools.ant.types.FilterChain;
  import org.apache.tools.ant.types.Path;
  
  /**
   * Special container support for the Caucho Resin 3.x servlet container.
   * 
   * @author <a href="mailto:vmassol@apache.org">Vincent Massol</a>
   * 
   * @version $Id: Resin3xContainer.java,v 1.1 2004/01/18 11:03:05 vmassol Exp $
   */
  public class Resin3xContainer extends AbstractResinContainer
  {
      // AbstractContainer Implementation ----------------------------------------
  
      /**
       * @see org.apache.cactus.integration.ant.container.Container#getName
       */
      public final String getName()
      {
          return "Resin 3.x";
      }
      
      // AbstractResinContainer Implementation -----------------------------------
  
      /**
       * @see AbstractResinContainer#getContainerDirName
       */
      protected final String getContainerDirName()
      {
          return "resin3x";
      }
  
      /**
       * @see AbstractResinContainer#startUpAdditions(Java)
       */
      protected void startUpAdditions(Java theJavaContainer, Path theClasspath)
      {
          // It seems Resin 3.x requires the following property to be 
          // set in order to start...
          theJavaContainer.addSysproperty(createSysProperty(
              "java.util.logging.manager", "com.caucho.log.LogManagerImpl"));
  
          // Add the resin_home/bin directory to the library path so that the 
          // resin dll/so can be loaded.
          theJavaContainer.addSysproperty(createSysProperty(
              "java.library.path", new File(getDir(), "bin")));
  
          // Add the tools.jar to the classpath. This is not required for
          // Resin 2.x but it is for Resin 3.x
          addToolsJarToClasspath(theClasspath);          
      }
  
      /**
       * @see AbstractResinContainer#prepareAdditions(FilterChain)
       */
      protected void prepareAdditions(FilterChain theFilterChain) 
          throws IOException
      {
          ResourceUtils.copyResource(getProject(),
              RESOURCE_PATH + getContainerDirName() + "/app-default.xml",
              new File(getTmpDir(), "app-default.xml"), theFilterChain);
      }
  }
  
  
  
  1.17      +2 -1      jakarta-cactus/samples/servlet/src/scripts/j2ee12/build.properties
  
  Index: build.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-cactus/samples/servlet/src/scripts/j2ee12/build.properties,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- build.properties	23 Nov 2003 18:12:16 -0000	1.16
  +++ build.properties	18 Jan 2004 11:03:05 -0000	1.17
  @@ -34,6 +34,7 @@
   #       tests on the Resin 2.x, comment the "cactus.home.resin2x" property.
   
   #cactus.home.resin2x = c:/Apps/resin-2.1.11
  +#cactus.home.resin3x = c:/Apps/resin-3.0.5
   #cactus.home.tomcat3x = c:/Apps/jakarta-tomcat-3.3.1a
   #cactus.home.tomcat4x = c:/Apps/jakarta-tomcat-4.1.29
   #cactus.home.tomcat5x = c:/Apps/jakarta-tomcat-5.0.14
  
  
  
  1.29      +5 -0      jakarta-cactus/samples/servlet/src/scripts/share/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-cactus/samples/servlet/src/scripts/share/build.xml,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- build.xml	30 Nov 2003 12:19:43 -0000	1.28
  +++ build.xml	18 Jan 2004 11:03:05 -0000	1.29
  @@ -304,6 +304,7 @@
       <mkdir dir="${target.testreports.dir}/orion1x"/>
       <mkdir dir="${target.testreports.dir}/orion2x"/>
       <mkdir dir="${target.testreports.dir}/resin2x"/>
  +    <mkdir dir="${target.testreports.dir}/resin3x"/>
       <@j2ee12.begin@mkdir dir="${target.testreports.dir}/tomcat3x"/@j2ee12.end@>
       <mkdir dir="${target.testreports.dir}/tomcat4x"/>
       <mkdir dir="${target.testreports.dir}/tomcat5x"/>
  @@ -350,6 +351,10 @@
               dir="${cactus.home.resin2x}" port="${cactus.port}"
               output="${target.testreports.dir}/resin2x.out"
               todir="${target.testreports.dir}/resin2x"/>
  +        <resin3x if="cactus.home.resin3x"
  +            dir="${cactus.home.resin3x}" port="${cactus.port}"
  +            output="${target.testreports.dir}/resin3x.out"
  +            todir="${target.testreports.dir}/resin3x"/>
           <@j2ee12.begin@tomcat3x if="cactus.home.tomcat3x"
               dir="${cactus.home.tomcat3x}" port="${cactus.port}"
               output="${target.testreports.dir}/tomcat3x.out"
  
  
  
  1.1                  jakarta-cactus/integration/ant/src/confs/share/resin3x/app-default.xml
  
  Index: app-default.xml
  ===================================================================
  <web-app-default>
  
    <!-- configures the default class loader -->
    <class-loader>
      <compiling-loader path='WEB-INF/classes'/>
      <library-loader path='WEB-INF/lib'/>
    </class-loader>
  
    <!-- Add default security configuration for cactus -->
    <authenticator>
      <type>com.caucho.server.security.XmlAuthenticator</type>
      <init>
        <user>testuser:testpassword:test</user>
        <password-digest>none</password-digest>
      </init>
    </authenticator>
  
    <servlet servlet-name="directory"
             servlet-class="com.caucho.servlets.DirectoryServlet"/>
  
    <servlet servlet-name="file"
             servlet-class="com.caucho.servlets.FileServlet"/>
  
    <servlet servlet-name="jsp"
             servlet-class="com.caucho.jsp.JspServlet">
    </servlet>
  
    <servlet servlet-name="jspx"
             servlet-class="com.caucho.jsp.JspServlet">
      <init>
        <xml>true</xml>
      </init>
    </servlet>
  
    <servlet servlet-name="xtp"
             servlet-class="com.caucho.jsp.XtpServlet"/>
  
    <servlet-mapping url-pattern="*.jsp" servlet-name="jsp"/>
    <servlet-mapping url-pattern="*.jspx" servlet-name="jspx"/>
    <servlet-mapping url-pattern="*.xtp" servlet-name="xtp"/>
  
    <servlet-mapping url-pattern="/" servlet-name="file"/>
  
    <servlet servlet-name="j_security_check"
             servlet-class="com.caucho.server.security.FormLoginServlet"/>
  
    <login-config>
      <auth-method>basic</auth-method>
      <realm-name>resin</realm-name>
    </login-config>
  
    <!-- Configures the special index files to check for directory URLs -->
    <welcome-file-list>
      <welcome-file>index.xtp</welcome-file>
      <welcome-file>index.jsp</welcome-file>
      <welcome-file>index.html</welcome-file>
    </welcome-file-list>
  
    <mime-mapping extension='.html' mime-type='text/html'/>
    <mime-mapping extension=".aif" mime-type="audio/x-aiff"/>
    <mime-mapping extension=".aiff" mime-type="audio/x-aiff"/>
    <mime-mapping extension=".aifc" mime-type="audio/x-aiff"/>
    <mime-mapping extension=".ai" mime-type="application/postscript"/>
    <mime-mapping extension=".au" mime-type="audio/basic"/>
    <mime-mapping extension=".asc" mime-type="text/plain"/>
    <mime-mapping extension=".asf" mime-type="video/x-ms-asf"/>
    <mime-mapping extension=".asx" mime-type="video/x-ms-asf"/>
    <mime-mapping extension=".avi" mime-type="video/x-msvideo"/>
      
    <mime-mapping extension=".bin" mime-type="application/octet-stream"/>
    <mime-mapping extension=".bcpio" mime-type="application/x-bcpio"/>
    <mime-mapping extension=".bmp" mime-type="image/bmp"/>
      
    <mime-mapping extension=".class" mime-type="application/octet-stream"/>
    <mime-mapping extension=".cpt" mime-type="application/mac-compactpro"/>
    <mime-mapping extension=".css" mime-type="text/css"/>
    <mime-mapping extension=".cpio" mime-type="application/x-cpio"/>
    <mime-mapping extension=".csh" mime-type="application/x-csh"/>
    <mime-mapping extension=".cdf" mime-type="application/x-netcdf"/>
      
    <mime-mapping extension=".dms" mime-type="application/octet-stream"/>
    <mime-mapping extension=".doc" mime-type="application/msword"/>
    <mime-mapping extension=".dcr" mime-type="application/x-director"/>
    <mime-mapping extension=".dir" mime-type="application/x-director"/>
    <mime-mapping extension=".dxr" mime-type="application/x-director"/>
    <mime-mapping extension=".dvi" mime-type="application/x-dvi"/>
      
    <mime-mapping extension=".exe" mime-type="application/octet-stream"/>
    <mime-mapping extension=".eps" mime-type="application/postscript"/>
    <mime-mapping extension=".etx" mime-type="text/x-setext"/>
      
    <mime-mapping extension=".gtar" mime-type="application/x-gtar"/>
    <mime-mapping extension=".gif" mime-type="image/gif"/>
    <mime-mapping extension=".gz" mime-type="application/octet-stream"/>
      
    <mime-mapping extension=".hdml" mime-type="text/x-hdml"/>
    <mime-mapping extension=".hqx" mime-type="application/mac-binhex40"/>
    <mime-mapping extension=".html" mime-type="text/html"/>
    <mime-mapping extension=".htm" mime-type="text/html"/>
    <mime-mapping extension=".hdf" mime-type="application/x-hdf"/>
      
    <mime-mapping extension=".ief" mime-type="image/ief"/>
    <mime-mapping extension=".ice" mime-type="x-conference/x-cooltalk"/>
    <mime-mapping extension=".js" mime-type="application/x-javascript"/>
    <mime-mapping extension=".jpeg" mime-type="image/jpeg"/>
    <mime-mapping extension=".jpg" mime-type="image/jpeg"/>
    <mime-mapping extension=".jpe" mime-type="image/jpeg"/>
      
    <mime-mapping extension=".kar" mime-type="audio/midi"/>
      
    <mime-mapping extension=".latex" mime-type="application/x-latex"/>
    <mime-mapping extension=".lha" mime-type="application/octet-stream"/>
    <mime-mapping extension=".lhz" mime-type="application/octet-stream"/>
      
    <mime-mapping extension=".mid" mime-type="audio/midi"/>
    <mime-mapping extension=".mpeg" mime-type="video/mpeg"/>
    <mime-mapping extension=".mpg" mime-type="video/mpeg"/>
    <mime-mapping extension=".mpe" mime-type="video/mpeg"/>
    <mime-mapping extension=".mov" mime-type="video/quicktime"/>
    <mime-mapping extension=".movie" mime-type="video/x-sgi-movie"/>
    <mime-mapping extension=".mpga" mime-type="audio/mpeg"/>
    <mime-mapping extension=".mp2" mime-type="audio/mpeg"/>
    <mime-mapping extension=".mp3" mime-type="audio/mpeg"/>
    <mime-mapping extension=".man" mime-type="application/x-troff-man"/>
    <mime-mapping extension=".me" mime-type="application/x-troff-me"/>
    <mime-mapping extension=".ms" mime-type="application/x-troff-ms"/>
      
    <mime-mapping extension=".nc" mime-type="application/x-netcdf"/>
      
    <mime-mapping extension=".oda" mime-type="application/oda"/>
      
    <mime-mapping extension=".pdf" mime-type="application/pdf"/>
    <mime-mapping extension=".ps" mime-type="application/postscript"/>
    <mime-mapping extension=".ppt" mime-type="application/vnd.ms-powerpoint"/>
    <mime-mapping extension=".png" mime-type="image/png"/>
    <mime-mapping extension=".pgn" mime-type="application/x-chess-pgn"/>
    <mime-mapping extension=".pnm" mime-type="image/x-portable-anymap"/>
    <mime-mapping extension=".pbm" mime-type="image/x-portable-bitmap"/>
    <mime-mapping extension=".pgm" mime-type="image/x-portable-graymap"/>
    <mime-mapping extension=".ppm" mime-type="image/x-portable-pixmap"/>
      
    <mime-mapping extension=".qt" mime-type="video/quicktime"/>
      
    <mime-mapping extension=".rtf" mime-type="application/rtf"/>
    <mime-mapping extension=".ram" mime-type="audio/x-pn-realaudio"/>
    <mime-mapping extension=".rm" mime-type="audio/x-pn-realaudio"/>
    <mime-mapping extension=".rpm" mime-type="audio/x-pn-realaudio-plugin"/>
    <mime-mapping extension=".ra" mime-type="audio/x-realaudio"/>
    <mime-mapping extension=".ras" mime-type="image/x-cmu-raster"/>
    <mime-mapping extension=".rgb" mime-type="image/x-rgb"/>
    <mime-mapping extension=".rtx" mime-type="text/richtext"/>
    <mime-mapping extension=".rtf" mime-type="text/rtf"/>
      
    <mime-mapping extension=".smi" mime-type="application/smil"/>
    <mime-mapping extension=".smil" mime-type="application/smil"/>
    <mime-mapping extension=".sml" mime-type="application/smil"/>
    <mime-mapping extension=".skp" mime-type="application/x-koan"/>
    <mime-mapping extension=".skd" mime-type="application/x-koan"/>
    <mime-mapping extension=".skt" mime-type="application/x-koan"/>
    <mime-mapping extension=".skm" mime-type="application/x-koan"/>
    <mime-mapping extension=".src" mime-type="application/x-wais-source"/>
    <mime-mapping extension=".sh" mime-type="application/x-sh"/>
    <mime-mapping extension=".shar" mime-type="application/x-shar"/>
    <mime-mapping extension=".swf" mime-type="application/x-shockwave-flash"/>
    <mime-mapping extension=".sit" mime-type="application/x-stuffit"/>
    <mime-mapping extension=".spl" mime-type="application/x-futuresplash"/>
    <mime-mapping extension=".sv4cpio" mime-type="application/x-sv4cpio"/>
    <mime-mapping extension=".sv4crc" mime-type="application/x-sv4crc"/>
    <mime-mapping extension=".snd" mime-type="audio/basic"/>
    <mime-mapping extension=".sgml" mime-type="text/sgml"/>
    <mime-mapping extension=".sgm" mime-type="text/sgml"/>
      
    <mime-mapping extension=".tgz" mime-type="application/octet-stream"/>
    <mime-mapping extension=".tar" mime-type="application/x-tar"/>
    <mime-mapping extension=".tcl" mime-type="application/x-tcl"/>
    <mime-mapping extension=".tex" mime-type="application/x-tex"/>
    <mime-mapping extension=".texinfo" mime-type="application/x-texinfo"/>
    <mime-mapping extension=".texi" mime-type="application/x-texinfo"/>
    <mime-mapping extension=".t" mime-type="application/x-troff"/>
    <mime-mapping extension=".tr" mime-type="application/x-troff"/>
    <mime-mapping extension=".roff" mime-type="application/x-troff"/>
    <mime-mapping extension=".tiff" mime-type="image/tiff"/>
    <mime-mapping extension=".tif" mime-type="image/tiff"/>
    <mime-mapping extension=".txt" mime-type="text/plain"/>
    <mime-mapping extension=".tsv" mime-type="text/tab-separated-values"/>
      
    <mime-mapping extension=".ustar" mime-type="application/x-ustar"/>
      
    <mime-mapping extension=".vcd" mime-type="application/x-cdlink"/>
    <mime-mapping extension=".vrml" mime-type="model/vrml"/>
      
    <mime-mapping extension=".wav" mime-type="audio/x-wav"/>
    <mime-mapping extension=".wax" mime-type="audio/x-ms-wax"/>
    <mime-mapping extension=".wrl" mime-type="model/vrml"/>
    <mime-mapping extension=".wma" mime-type="audio/x-ms-wma"/>
    <mime-mapping extension=".wml" mime-type="text/vnd.wap.wml"/>
    <mime-mapping extension=".wmls" mime-type="text/vnd.wap.wmlscript"/>
    <mime-mapping extension=".wmlc" mime-type="application/vnd.wap.wmlc"/>
    <mime-mapping extension=".wmlsc" mime-type="application/vnd.wap.wmlscript"/>
    <mime-mapping extension=".wbmp" mime-type="image/vnd.wap.wbmp"/>
     
    <mime-mapping extension=".xls" mime-type="application/vnd.ms-excel"/>
    <mime-mapping extension=".xbm" mime-type="image/x-xbitmap"/>
    <mime-mapping extension=".xpm" mime-type="image/x-xpixmax"/>
    <mime-mapping extension=".xwd" mime-type="image/x-xwindowdump"/>
    <mime-mapping extension=".xml" mime-type="text/xml"/>
      
    <mime-mapping extension=".zip" mime-type="application/zip"/>
    <mime-mapping extension=".z" mime-type="application/octet-stream"/>
  
    <config-file>WEB-INF/web.xml</config-file>
    <config-file>WEB-INF/resin-web.xml</config-file>
  </web-app-default>
  
  
  
  
  1.1                  jakarta-cactus/integration/ant/src/confs/share/resin3x/resin.conf
  
  Index: resin.conf
  ===================================================================
  <!--
     - Resin 3.0 configuration file.
    -->
  <resin xmlns="http://caucho.com/ns/resin"
         xmlns:resin="http://caucho.com/ns/resin/core">
    <!--
       - Logging configuration for the JDK logging API.
      -->
    <log name='' level='info' path='stdout:' timestamp='[%H:%M:%S.%s] '/>
    <log name='com.caucho.java' level='fine' path='stdout:'
         timestamp='[%H:%M:%S.%s] '/>
    <log name='com.caucho.loader' level='config' path='stdout:'
         timestamp='[%H:%M:%S.%s] '/>
  
    <!--
       - For production sites, change dependency-check-interval to something
       - like 600s, so it only checks for updates every 10 minutes.
      -->
    <dependency-check-interval>2s</dependency-check-interval>
  
    <!--
       - You can change the compiler to "javac" or jikes.
       - The default is "internal" only because it's the most
       - likely to be available.
      -->
    <javac compiler="internal" args=""/>
  
    <!-- Security providers.
       - <security-provider>
       -    com.sun.net.ssl.internal.ssl.Provider
       - </security-provider>
      -->
  
    <!--
       - If starting bin/resin as root on Unix, specify the user name
       - and group name for the web server user.
       -
       - <user-name>resin</user-name>
       - <group-name>resin</group-name>
      -->
  
    <!--
       - Configures threads shared among all HTTP and SRUN ports.
      -->
    <thread-pool>
      <!-- Maximum number of threads. -->
      <thread-max>200</thread-max>
  
      <!-- Minimum number of spare connection threads. -->
      <spare-thread-min>25</spare-thread-min>
    </thread-pool>
  
    <!--
       - Configures the minimum free memory allowed before Resin
       - will force a restart.
      -->
    <min-free-memory>1M</min-free-memory>
  
    <server>
      <!-- adds all .jar files under the resin/lib directory -->
      <class-loader>
        <tree-loader path="$resin-home/lib"/>
      </class-loader>
  
      <!-- The http port -->
      <http id="" host="*" port="8080"/>
  
      <!--
         - SSL port configuration:
         -
         - <http port="8443">
         -   <openssl>
         -     <certificate-file>keys/gryffindor.crt</certificate-file>
         -     <certificate-key-file>keys/gryffindor.key</certificate-key-file>
         -     <password>test123</password>
         -   </openssl>
         - </http>
        -->
  
      <!--
         - The local cluster, used for load balancing and distributed
         - backup.
        -->
      <cluster>
        <srun id="" host="127.0.0.1" port="6802" index="1"/>
      </cluster>
  
      <!--
         - Enables/disables exceptions when the browser closes a connection.
        -->
      <ignore-client-disconnect>true</ignore-client-disconnect>
  
      <!--
         - Enables the cache
        -->
      <cache path="cache" memory-size="10M"/>
  
      <!--
         - Sets timeout values for cacheable pages, e.g. static pages.
        -->
      <web-app-default>
        <cache-mapping url-pattern="/" expires="5s"/>
        <cache-mapping url-pattern="*.gif" expires="60s"/>
        <cache-mapping url-pattern="*.jpg" expires="60s"/>
      </web-app-default>
  
      <!--
         - Sample database pool configuration
         -
         - The JDBC name is java:comp/env/jdbc/test
         -
           <database>
             <jndi-name>jdbc/mysql</jndi-name>
             <driver type="org.gjt.mm.mysql.Driver">
               <url>jdbc:mysql://localhost:3306/test</url>
               <user></user>
               <password></password>
              </driver>
              <prepared-statement-cache-size>8</prepared-statement-cache-size>
              <max-connections>20</max-connections>
              <max-idle-time>30s</max-idle-time>
            </database>
        -->
  
      <!--
         - Default host configuration applied to all virtual hosts.
        -->
      <host-default>
        <class-loader>
          <compiling-loader path='webapps/WEB-INF/classes'/>
          <library-loader path='webapps/WEB-INF/lib'/>
        </class-loader>
  
        <!--
           - With another web server, like Apache, this can be commented out
           - because the web server will log this information.
          -->
        <access-log path='logs/access.log' 
              format='%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"'
              rollover-period='1W'/>
  
        <!-- creates the webapps directory for .war expansion -->
        <web-app-deploy path='webapps'/>
  
        <!-- creates the deploy directory for .ear expansion -->
        <ear-deploy path='deploy'>
          <ear-default>
            <!-- Configure this for the ejb server
               -
               - <ejb-server>
               -   <config-directory>WEB-INF</config-directory>
               -   <data-source>jdbc/test</data-source>
               - </ejb-server>
              -->
          </ear-default>
        </ear-deploy>
  
        <!-- creates the deploy directory for .rar expansion -->
        <resource-deploy path='deploy'/>
  
        <!-- creates a second deploy directory for .war expansion -->
        <web-app-deploy path='deploy'/>
      </host-default>
  
      <!-- includes the web-app-default for default web-app behavior -->
      <resin:include path="app-default.xml"/>
  
      <!-- configures the default host, matching any host name -->
      <host id=''>
        <document-directory>doc</document-directory>
  
        <!-- configures the root web-app -->
        <web-app id='/'>
          <!-- adds xsl to the search path -->
          <class-loader>
            <simple-loader path="$host-root/xsl"/>
          </class-loader>
  
          <servlet-mapping url-pattern="/servlet/*" servlet-name="invoker"/>
        </web-app>
      </host>
    </server>
  </resin>
  
  
  
  1.16      +2 -1      jakarta-cactus/samples/servlet/src/scripts/j2ee13/build.properties
  
  Index: build.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-cactus/samples/servlet/src/scripts/j2ee13/build.properties,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- build.properties	23 Nov 2003 18:12:16 -0000	1.15
  +++ build.properties	18 Jan 2004 11:03:05 -0000	1.16
  @@ -40,6 +40,7 @@
   #       tests on the Resin 2.x, comment the "cactus.home.resin2x" property.
   
   #cactus.home.resin2x = c:/Apps/resin-2.1.11
  +#cactus.home.resin3x = c:/Apps/resin-3.0.5
   #cactus.home.tomcat4x = c:/Apps/jakarta-tomcat-4.1.29
   #cactus.home.tomcat5x = c:/Apps/jakarta-tomcat-5.0.14
   #cactus.home.orion1x = c:/Apps/orion-1.6.0
  
  
  
  1.2       +1 -1      jakarta-cactus/integration/ant/src/confs/share/resin2x/resin.conf
  
  Index: resin.conf
  ===================================================================
  RCS file: /home/cvs/jakarta-cactus/integration/ant/src/confs/share/resin2x/resin.conf,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- resin.conf	3 Feb 2003 10:52:47 -0000	1.1
  +++ resin.conf	18 Jan 2004 11:03:05 -0000	1.2
  @@ -12,7 +12,7 @@
           <init-param user='testuser:testpassword:test'/>
         </authenticator>
   
  -      <war-dir id='.'/>
  +      <war-dir id='webapps'/>
   
       </host>
       
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: cactus-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: cactus-dev-help@jakarta.apache.org