You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by va...@apache.org on 2007/09/20 18:01:24 UTC

svn commit: r577803 - in /geronimo/server/branches/2.0: configs/jetty6/src/plan/ modules/geronimo-jetty6-builder/src/main/java/org/apache/geronimo/jetty6/deployment/ modules/geronimo-jetty6-builder/src/main/xsd/ modules/geronimo-jetty6-builder/src/test...

Author: vamsic007
Date: Thu Sep 20 09:01:17 2007
New Revision: 577803

URL: http://svn.apache.org/viewvc?rev=577803&view=rev
Log:
GERONIMO-2964 Cannot specify the Tomcat work directory for a web application
  o Committing GERONIMO-2964-2.0-w-cons-change.patch submitted in the JIRA
  o geronimo-web.xml can now have a "work-dir" tag to specify the work directory to be used by the application.
  o For Tomcat this work directory will be relative to "catalina.home"
  o For Jetty this work directory will be relative to jetty home which is var/jetty by default.
  o Revision 577801 in trunk.

Modified:
    geronimo/server/branches/2.0/configs/jetty6/src/plan/plan.xml
    geronimo/server/branches/2.0/modules/geronimo-jetty6-builder/src/main/java/org/apache/geronimo/jetty6/deployment/JettyModuleBuilder.java
    geronimo/server/branches/2.0/modules/geronimo-jetty6-builder/src/main/xsd/geronimo-jetty-2.0.xsd
    geronimo/server/branches/2.0/modules/geronimo-jetty6-builder/src/test/java/org/apache/geronimo/jetty6/deployment/JettyModuleBuilderTest.java
    geronimo/server/branches/2.0/modules/geronimo-jetty6-builder/src/test/resources/deployables/war1/WEB-INF/geronimo-web.xml
    geronimo/server/branches/2.0/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyContainer.java
    geronimo/server/branches/2.0/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyContainerImpl.java
    geronimo/server/branches/2.0/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyWebAppContext.java
    geronimo/server/branches/2.0/modules/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty6/AbstractWebModuleTest.java
    geronimo/server/branches/2.0/modules/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty6/GBeanInfoTest.java
    geronimo/server/branches/2.0/modules/geronimo-tomcat6-builder/src/main/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java
    geronimo/server/branches/2.0/modules/geronimo-tomcat6-builder/src/main/xsd/geronimo-tomcat-2.0.xsd
    geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/GeronimoStandardContext.java
    geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatContext.java
    geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatWebAppContext.java
    geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/test/java/org/apache/geronimo/tomcat/AbstractWebModuleTest.java
    geronimo/server/branches/2.0/modules/geronimo-web-2.5-builder/src/main/xsd/geronimo-web-2.0.xsd

Modified: geronimo/server/branches/2.0/configs/jetty6/src/plan/plan.xml
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.0/configs/jetty6/src/plan/plan.xml?rev=577803&r1=577802&r2=577803&view=diff
==============================================================================
--- geronimo/server/branches/2.0/configs/jetty6/src/plan/plan.xml (original)
+++ geronimo/server/branches/2.0/configs/jetty6/src/plan/plan.xml Thu Sep 20 09:01:17 2007
@@ -41,6 +41,10 @@
 
     <!-- default WAR container using Jetty -->
     <gbean name="JettyWebContainer" class="org.apache.geronimo.jetty6.JettyContainerImpl">
+      <attribute name="jettyHome">var/jetty</attribute>
+      <reference name="ServerInfo">
+        <name>ServerInfo</name>
+      </reference>
       <reference name="WebManager">
         <name>JettyWebManager</name>
       </reference>

Modified: geronimo/server/branches/2.0/modules/geronimo-jetty6-builder/src/main/java/org/apache/geronimo/jetty6/deployment/JettyModuleBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.0/modules/geronimo-jetty6-builder/src/main/java/org/apache/geronimo/jetty6/deployment/JettyModuleBuilder.java?rev=577803&r1=577802&r2=577803&view=diff
==============================================================================
--- geronimo/server/branches/2.0/modules/geronimo-jetty6-builder/src/main/java/org/apache/geronimo/jetty6/deployment/JettyModuleBuilder.java (original)
+++ geronimo/server/branches/2.0/modules/geronimo-jetty6-builder/src/main/java/org/apache/geronimo/jetty6/deployment/JettyModuleBuilder.java Thu Sep 20 09:01:17 2007
@@ -359,6 +359,11 @@
             }
             webModuleData.setAttribute("contextPath", contextPath);
 
+            if (jettyWebApp.isSetWorkDir()) {
+                String workDir = jettyWebApp.getWorkDir();
+                webModuleData.setAttribute("workDir", workDir);
+            }
+
             if (jettyWebApp.isSetWebContainer()) {
                 AbstractNameQuery webContainerName = ENCConfigBuilder.getGBeanQuery(NameFactory.GERONIMO_SERVICE, jettyWebApp.getWebContainer());
                 webModuleData.setReferencePattern("JettyContainer", webContainerName);

Modified: geronimo/server/branches/2.0/modules/geronimo-jetty6-builder/src/main/xsd/geronimo-jetty-2.0.xsd
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.0/modules/geronimo-jetty6-builder/src/main/xsd/geronimo-jetty-2.0.xsd?rev=577803&r1=577802&r2=577803&view=diff
==============================================================================
--- geronimo/server/branches/2.0/modules/geronimo-jetty6-builder/src/main/xsd/geronimo-jetty-2.0.xsd (original)
+++ geronimo/server/branches/2.0/modules/geronimo-jetty6-builder/src/main/xsd/geronimo-jetty-2.0.xsd Thu Sep 20 09:01:17 2007
@@ -119,6 +119,19 @@
                     </xs:documentation>
                 </xs:annotation>
             </xs:element>
+
+            <xs:element name="work-dir" type="xs:string" minOccurs="0">
+                <xs:annotation>
+                    <xs:documentation>
+                        This is the work directory that will be used by this
+                        application.  The directory location will be relative
+                        to jetty home, which is var/jetty by default.  Note
+                        that this is different from "jetty.home" system
+                        property.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+
             <xs:element ref="app:clustering" minOccurs="0">
                 <xs:annotation>
                     <xs:documentation>

Modified: geronimo/server/branches/2.0/modules/geronimo-jetty6-builder/src/test/java/org/apache/geronimo/jetty6/deployment/JettyModuleBuilderTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.0/modules/geronimo-jetty6-builder/src/test/java/org/apache/geronimo/jetty6/deployment/JettyModuleBuilderTest.java?rev=577803&r1=577802&r2=577803&view=diff
==============================================================================
--- geronimo/server/branches/2.0/modules/geronimo-jetty6-builder/src/test/java/org/apache/geronimo/jetty6/deployment/JettyModuleBuilderTest.java (original)
+++ geronimo/server/branches/2.0/modules/geronimo-jetty6-builder/src/test/java/org/apache/geronimo/jetty6/deployment/JettyModuleBuilderTest.java Thu Sep 20 09:01:17 2007
@@ -218,7 +218,8 @@
 
         ConfigurationData bootstrap = new ConfigurationData(baseId, naming);
 
-        bootstrap.addGBean("ServerInfo", BasicServerInfo.GBEAN_INFO).setAttribute("baseDirectory", ".");
+        GBeanData serverInfo = bootstrap.addGBean("ServerInfo", BasicServerInfo.GBEAN_INFO);
+        serverInfo.setAttribute("baseDirectory", ".");
 
         AbstractName configStoreName = bootstrap.addGBean("MockConfigurationStore", MockConfigStore.GBEAN_INFO).getAbstractName();
 
@@ -244,6 +245,8 @@
 
         GBeanData containerData = bootstrap.addGBean("JettyContainer", JettyContainerImpl.GBEAN_INFO);
         AbstractName containerName = containerData.getAbstractName();
+        containerData.setAttribute("jettyHome", new File(BASEDIR, "target/var/jetty").toString());
+        containerData.setReferencePattern("ServerInfo", serverInfo.getAbstractName());
 
         GBeanData connector = bootstrap.addGBean("JettyConnector", HTTPSocketConnector.GBEAN_INFO);
         connector.setAttribute("port", new Integer(5678));

Modified: geronimo/server/branches/2.0/modules/geronimo-jetty6-builder/src/test/resources/deployables/war1/WEB-INF/geronimo-web.xml
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.0/modules/geronimo-jetty6-builder/src/test/resources/deployables/war1/WEB-INF/geronimo-web.xml?rev=577803&r1=577802&r2=577803&view=diff
==============================================================================
--- geronimo/server/branches/2.0/modules/geronimo-jetty6-builder/src/test/resources/deployables/war1/WEB-INF/geronimo-web.xml (original)
+++ geronimo/server/branches/2.0/modules/geronimo-jetty6-builder/src/test/resources/deployables/war1/WEB-INF/geronimo-web.xml Thu Sep 20 09:01:17 2007
@@ -29,6 +29,7 @@
     </environment>
 
     <jetty:context-root>/test</jetty:context-root>
+    <jetty:work-dir>myworkdir</jetty:work-dir>
     <!--
         <jetty:security>
             <sec:default-principal>

Modified: geronimo/server/branches/2.0/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyContainer.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.0/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyContainer.java?rev=577803&r1=577802&r2=577803&view=diff
==============================================================================
--- geronimo/server/branches/2.0/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyContainer.java (original)
+++ geronimo/server/branches/2.0/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyContainer.java Thu Sep 20 09:01:17 2007
@@ -17,6 +17,8 @@
 
 package org.apache.geronimo.jetty6;
 
+import java.io.File;
+
 import org.apache.geronimo.management.geronimo.WebContainer;
 import org.mortbay.jetty.Connector;
 import org.mortbay.jetty.RequestLog;
@@ -50,4 +52,5 @@
 
     RequestLog getRequestLog();
 
+    File resolveToJettyHome(String workDir);
 }

Modified: geronimo/server/branches/2.0/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyContainerImpl.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.0/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyContainerImpl.java?rev=577803&r1=577802&r2=577803&view=diff
==============================================================================
--- geronimo/server/branches/2.0/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyContainerImpl.java (original)
+++ geronimo/server/branches/2.0/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyContainerImpl.java Thu Sep 20 09:01:17 2007
@@ -17,6 +17,7 @@
 
 package org.apache.geronimo.jetty6;
 
+import java.io.File;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -28,6 +29,7 @@
 import org.apache.geronimo.management.StatisticsProvider;
 import org.apache.geronimo.management.geronimo.NetworkConnector;
 import org.apache.geronimo.management.geronimo.WebManager;
+import org.apache.geronimo.system.serverinfo.ServerInfo;
 import org.apache.geronimo.webservices.SoapHandler;
 import org.apache.geronimo.webservices.WebServiceContainer;
 import org.mortbay.jetty.Connector;
@@ -45,10 +47,18 @@
  * @version $Rev$ $Date$
  */
 public class JettyContainerImpl implements JettyContainer, SoapHandler, GBeanLifecycle, StatisticsProvider {
+    /**
+     * The default value of JETTY_HOME variable
+     */
+    private static final String DEFAULT_JETTY_HOME = "var/jetty";
+
     private final Server server;
     private final Map webServices = new HashMap();
     private final String objectName;
     private final WebManager manager;
+    private final String jettyHome;
+    private final ServerInfo serverInfo;
+    private File jettyHomeDir;
     private JettyWebContainerStatsImpl stats;
     private final Map realms = new HashMap();
     private HandlerCollection handlerCollection = new HandlerCollection();
@@ -56,8 +66,11 @@
     private DefaultHandler defaultHandler = new DefaultHandler();
     private RequestLogHandler requestLogHandler = new RequestLogHandler();
 
-    public JettyContainerImpl(String objectName, WebManager manager) {
+    public JettyContainerImpl(String objectName, WebManager manager, String jettyHome, ServerInfo serverInfo) {
         this.objectName = objectName;
+        this.jettyHome = jettyHome;
+        this.serverInfo = serverInfo;
+
         server = new JettyServer();
 
         //set up the new jetty6 handler structure which is to have a HandlerCollection,
@@ -238,12 +251,22 @@
         this.requestLogHandler.setRequestLog(log);
     }
 
+    public File resolveToJettyHome(String workDir) {
+        if(workDir == null) {
+            return null;
+        }
+        return new File(jettyHomeDir, workDir);
+    }
     /* ------------------------------------------------------------ */
     public RequestLog getRequestLog() {
         return this.requestLogHandler.getRequestLog();
     }
 
     public void doStart() throws Exception {
+        jettyHomeDir = new File(serverInfo.resolveServerPath(jettyHome != null ? jettyHome : DEFAULT_JETTY_HOME));
+        if(!jettyHomeDir.exists()) {
+            jettyHomeDir.mkdirs();
+        }
         server.start();
     }
 
@@ -282,10 +305,13 @@
         infoBuilder.addAttribute("objectName", String.class, false);
         infoBuilder.addReference("WebManager", WebManager.class);
 
+        infoBuilder.addAttribute("jettyHome", String.class, true);
+        infoBuilder.addReference("ServerInfo", ServerInfo.class, "GBean");
+
         infoBuilder.addInterface(SoapHandler.class);
         infoBuilder.addInterface(JettyContainer.class);
         infoBuilder.addInterface(StatisticsProvider.class);
-        infoBuilder.setConstructor(new String[]{"objectName", "WebManager"});
+        infoBuilder.setConstructor(new String[]{"objectName", "WebManager", "jettyHome", "ServerInfo"});
 
         GBEAN_INFO = infoBuilder.getBeanInfo();
     }

Modified: geronimo/server/branches/2.0/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyWebAppContext.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.0/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyWebAppContext.java?rev=577803&r1=577802&r2=577803&view=diff
==============================================================================
--- geronimo/server/branches/2.0/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyWebAppContext.java (original)
+++ geronimo/server/branches/2.0/modules/geronimo-jetty6/src/main/java/org/apache/geronimo/jetty6/JettyWebAppContext.java Thu Sep 20 09:01:17 2007
@@ -17,6 +17,7 @@
 
 package org.apache.geronimo.jetty6;
 
+import java.io.File;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.ArrayList;
@@ -293,6 +294,13 @@
         return this.webAppContext.getContextPath();
     }
 
+    public void setWorkDir(String workDir) {
+        if(workDir == null) {
+            return;
+        }
+        this.webAppContext.setTempDirectory(jettyContainer.resolveToJettyHome(workDir));
+    }
+    
     public ClassLoader getWebClassLoader() {
         return webClassLoader;
     }
@@ -559,6 +567,7 @@
 
         infoBuilder.addAttribute("contextPath", String.class, true);
 
+        infoBuilder.addAttribute("workDir", String.class, true);
         infoBuilder.addReference("Host", Host.class, "Host");
         infoBuilder.addReference("TransactionManager", TransactionManager.class, NameFactory.TRANSACTION_MANAGER);
         infoBuilder.addReference("TrackedConnectionAssociator", TrackedConnectionAssociator.class, NameFactory.JCA_CONNECTION_TRACKER);

Modified: geronimo/server/branches/2.0/modules/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty6/AbstractWebModuleTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.0/modules/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty6/AbstractWebModuleTest.java?rev=577803&r1=577802&r2=577803&view=diff
==============================================================================
--- geronimo/server/branches/2.0/modules/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty6/AbstractWebModuleTest.java (original)
+++ geronimo/server/branches/2.0/modules/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty6/AbstractWebModuleTest.java Thu Sep 20 09:01:17 2007
@@ -181,7 +181,8 @@
 
         configurationBaseURL = cl.getResource("deployables/");
 
-        container = new JettyContainerImpl("test:name=JettyContainer", null);
+        ServerInfo serverInfo = new BasicServerInfo(".");
+        container = new JettyContainerImpl("test:name=JettyContainer", null, new File(BASEDIR, "target/var/jetty").toString(), serverInfo);
         container.doStart();
         connector = new HTTPSocketConnector(container, null);
         connector.setPort(5678);

Modified: geronimo/server/branches/2.0/modules/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty6/GBeanInfoTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.0/modules/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty6/GBeanInfoTest.java?rev=577803&r1=577802&r2=577803&view=diff
==============================================================================
--- geronimo/server/branches/2.0/modules/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty6/GBeanInfoTest.java (original)
+++ geronimo/server/branches/2.0/modules/geronimo-jetty6/src/test/java/org/apache/geronimo/jetty6/GBeanInfoTest.java Thu Sep 20 09:01:17 2007
@@ -20,6 +20,8 @@
 
 import junit.framework.TestCase;
 import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.system.serverinfo.BasicServerInfo;
+import org.apache.geronimo.system.serverinfo.ServerInfo;
 
 /**
  * @version $Rev$ $Date$
@@ -33,6 +35,7 @@
 
     public void testJettyContainerImpl() throws Exception {
         JettyContainerImpl.getGBeanInfo();
-        new JettyContainerImpl(null, null);
+        ServerInfo serverInfo = new BasicServerInfo(".");
+        new JettyContainerImpl(null, null, null, serverInfo);
     }
 }

Modified: geronimo/server/branches/2.0/modules/geronimo-tomcat6-builder/src/main/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.0/modules/geronimo-tomcat6-builder/src/main/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java?rev=577803&r1=577802&r2=577803&view=diff
==============================================================================
--- geronimo/server/branches/2.0/modules/geronimo-tomcat6-builder/src/main/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java (original)
+++ geronimo/server/branches/2.0/modules/geronimo-tomcat6-builder/src/main/java/org/apache/geronimo/tomcat/deployment/TomcatModuleBuilder.java Thu Sep 20 09:01:17 2007
@@ -329,6 +329,10 @@
             if (tomcatWebApp.isSetCrossContext()) {
                 webModuleData.setAttribute("crossContext", Boolean.TRUE);
             }
+            if (tomcatWebApp.isSetWorkDir()) {
+                String workDir = tomcatWebApp.getWorkDir();
+                webModuleData.setAttribute("workDir", workDir);
+            }
             if (tomcatWebApp.isSetDisableCookies()) {
                 webModuleData.setAttribute("disableCookies", Boolean.TRUE);
             }

Modified: geronimo/server/branches/2.0/modules/geronimo-tomcat6-builder/src/main/xsd/geronimo-tomcat-2.0.xsd
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.0/modules/geronimo-tomcat6-builder/src/main/xsd/geronimo-tomcat-2.0.xsd?rev=577803&r1=577802&r2=577803&view=diff
==============================================================================
--- geronimo/server/branches/2.0/modules/geronimo-tomcat6-builder/src/main/xsd/geronimo-tomcat-2.0.xsd (original)
+++ geronimo/server/branches/2.0/modules/geronimo-tomcat6-builder/src/main/xsd/geronimo-tomcat-2.0.xsd Thu Sep 20 09:01:17 2007
@@ -115,6 +115,16 @@
                 </xs:annotation>
             </xs:element>
 
+            <xs:element name="work-dir" type="xs:string" minOccurs="0">
+                <xs:annotation>
+                    <xs:documentation>
+                        This is the work directory that will be used by this
+                        application.  The directory location will be relative
+                        to "catalina.home".
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+
             <!--<xs:element name="context-priority-classloader" type="xs:boolean" minOccurs="0"/>-->
 
             <xs:element ref="naming:web-container" minOccurs="0">

Modified: geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/GeronimoStandardContext.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/GeronimoStandardContext.java?rev=577803&r1=577802&r2=577803&view=diff
==============================================================================
--- geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/GeronimoStandardContext.java (original)
+++ geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/GeronimoStandardContext.java Thu Sep 20 09:01:17 2007
@@ -178,6 +178,8 @@
 
         this.setCrossContext(ctx.isCrossContext());
 
+        this.setWorkDir(ctx.getWorkDir());
+
         this.setCookies(!ctx.isDisableCookies());
 
         //Set the Dispatch listener

Modified: geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatContext.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatContext.java?rev=577803&r1=577802&r2=577803&view=diff
==============================================================================
--- geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatContext.java (original)
+++ geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatContext.java Thu Sep 20 09:01:17 2007
@@ -75,6 +75,8 @@
 
     public boolean isCrossContext();
 
+    public String getWorkDir();
+
     public boolean isDisableCookies();
 
     public Map getWebServices();

Modified: geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatWebAppContext.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatWebAppContext.java?rev=577803&r1=577802&r2=577803&view=diff
==============================================================================
--- geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatWebAppContext.java (original)
+++ geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/main/java/org/apache/geronimo/tomcat/TomcatWebAppContext.java Thu Sep 20 09:01:17 2007
@@ -105,6 +105,8 @@
     private final Manager manager;
 
     private final boolean crossContext;
+    
+    private final String workDir;
 
     private final boolean disableCookies;
 
@@ -167,6 +169,7 @@
             CatalinaClusterGBean cluster,
             ManagerGBean manager,
             boolean crossContext,
+            String workDir,
             boolean disableCookies,
             Map webServices,
             Holder holder,
@@ -269,6 +272,8 @@
         }
 
         this.crossContext = crossContext;
+        
+        this.workDir = workDir;
 
         this.disableCookies = disableCookies;
 
@@ -439,6 +444,10 @@
         return crossContext;
     }
 
+    public String getWorkDir() {
+        return workDir;
+    }
+    
     public Map getWebServices(){
         return webServices;
     }
@@ -585,6 +594,7 @@
         infoBuilder.addReference("Cluster", CatalinaClusterGBean.class, CatalinaClusterGBean.J2EE_TYPE);
         infoBuilder.addReference("Manager", ManagerGBean.class);
         infoBuilder.addAttribute("crossContext", boolean.class, true);
+        infoBuilder.addAttribute("workDir", String.class, true);
         infoBuilder.addAttribute("disableCookies", boolean.class, true);
         infoBuilder.addAttribute("webServices", Map.class, true);
         infoBuilder.addAttribute("holder", Holder.class, true);
@@ -615,6 +625,7 @@
                 "Cluster",
                 "Manager",
                 "crossContext",
+                "workDir",
                 "disableCookies",
                 "webServices",
                 "holder",

Modified: geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/test/java/org/apache/geronimo/tomcat/AbstractWebModuleTest.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/test/java/org/apache/geronimo/tomcat/AbstractWebModuleTest.java?rev=577803&r1=577802&r2=577803&view=diff
==============================================================================
--- geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/test/java/org/apache/geronimo/tomcat/AbstractWebModuleTest.java (original)
+++ geronimo/server/branches/2.0/modules/geronimo-tomcat6/src/test/java/org/apache/geronimo/tomcat/AbstractWebModuleTest.java Thu Sep 20 09:01:17 2007
@@ -87,6 +87,7 @@
                 null,
                 null,
                 false,
+                null,
                 false,
                 null,
                 null,

Modified: geronimo/server/branches/2.0/modules/geronimo-web-2.5-builder/src/main/xsd/geronimo-web-2.0.xsd
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.0/modules/geronimo-web-2.5-builder/src/main/xsd/geronimo-web-2.0.xsd?rev=577803&r1=577802&r2=577803&view=diff
==============================================================================
--- geronimo/server/branches/2.0/modules/geronimo-web-2.5-builder/src/main/xsd/geronimo-web-2.0.xsd (original)
+++ geronimo/server/branches/2.0/modules/geronimo-web-2.5-builder/src/main/xsd/geronimo-web-2.0.xsd Thu Sep 20 09:01:17 2007
@@ -68,6 +68,16 @@
             </xs:element>
 
             <xs:element name="context-root" type="xs:string" minOccurs="0"/>
+            <xs:element name="work-dir" type="xs:string" minOccurs="0">
+                <xs:annotation>
+                    <xs:documentation>
+                        This is the work directory that will be used by this application.
+                        For Jetty this will be relative to jetty home which is var/jetty
+                        by default.
+                        For Tomcat this will be relative to "catalina.home".
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
             <!--<xs:element name="context-priority-classloader" type="xs:boolean" minOccurs="0"/>-->
             <xs:element ref="naming:web-container" minOccurs="0"/>
             <xs:element name="container-config" type="web:container-configType" minOccurs="0">