You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ja...@apache.org on 2003/08/23 11:38:05 UTC
cvs commit: incubator-geronimo/modules/web/src/java/org/apache/geronimo/web WebAccessLog.java AbstractWebApplication.java AbstractWebContainer.java WebApplication.java WebContainer.java
janb 2003/08/23 02:38:04
Modified: modules/web/src/java/org/apache/geronimo/web
AbstractWebApplication.java
AbstractWebContainer.java WebApplication.java
WebContainer.java
Added: modules/web/src/java/org/apache/geronimo/web
WebAccessLog.java
Log:
Fleshing out more methods.
Revision Changes Path
1.3 +163 -17 incubator-geronimo/modules/web/src/java/org/apache/geronimo/web/AbstractWebApplication.java
Index: AbstractWebApplication.java
===================================================================
RCS file: /home/cvs/incubator-geronimo/modules/web/src/java/org/apache/geronimo/web/AbstractWebApplication.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AbstractWebApplication.java 21 Aug 2003 14:36:22 -0000 1.2
+++ AbstractWebApplication.java 23 Aug 2003 09:38:04 -0000 1.3
@@ -58,6 +58,15 @@
import java.net.URI;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.LinkRef;
+import javax.naming.NamingException;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.FactoryConfigurationError;
+import javax.xml.parsers.ParserConfigurationException;
+
import org.apache.geronimo.common.AbstractComponent;
import org.w3c.dom.Document;
@@ -66,8 +75,7 @@
* AbstractWebApplication
*
* Instances are created by a deployer. The deployer finds the
- * WebContainer and associates it with the WebApplication, then calls
- * deploy() on the container passing in the identity of the WebApplication.
+ * WebContainer and associates it with the WebApplication.
*
*
* @version $Revision$ $Date$
@@ -76,8 +84,46 @@
extends AbstractComponent
implements WebApplication
{
+ /**
+ * Class loading delegation model
+ */
+ private boolean java2ClassloadingCompliance = false;
-
+ private URI warURI = null;
+ private URI webXmlURI = null;
+ private Document webXmlDoc = null;
+ private DocumentBuilder parser = null;
+
+ private URI geronimoXmlURI = null;
+ private Document geronimoXmlDoc = null;
+ private Context initialContext = null;
+
+ /* -------------------------------------------------------------------------------------- */
+ /**
+ * Constructor
+ *
+ */
+ public AbstractWebApplication()
+ {
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ try
+ {
+ parser = factory.newDocumentBuilder();
+ initialContext = new InitialContext();
+ }
+ catch (FactoryConfigurationError e)
+ {
+ throw new AssertionError("No XML parser available");
+ }
+ catch (ParserConfigurationException e)
+ {
+ throw new AssertionError("No XML parser available");
+ }
+ catch (NamingException e)
+ {
+ throw new AssertionError("No initial JNDI context");
+ }
+ }
/* -------------------------------------------------------------------------------------- */
/* Start the webapp. Called by the container or management interface
@@ -85,13 +131,13 @@
* @throws IllegalStateException
* @see org.apache.geronimo.common.Component#start()
*/
- public void doStart()
- throws Exception
+ public void doStart() throws Exception
{
if (getContainer() == null)
throw new IllegalStateException("WebApplication must have a container set before START can be called");
- //start the webapp
+ // set up the JNDI context for this webapp
+ setupENC();
}
/* -------------------------------------------------------------------------------------- */
@@ -133,41 +179,141 @@
*/
public String getDeploymentDescriptor()
{
- // TODO
+ try
+ {
+ parseWebXml();
+
+ }
+ catch (Exception e)
+ {
+ throw new IllegalStateException(e.toString());
+ }
+
return null;
}
/* -------------------------------------------------------------------------------------- */
- /*
+ /* Get the URI of the web.xml deployment descriptor
* @return
* @see org.apache.geronimo.web.WebApplication#getDeploymentDescriptorURI()
*/
public URI getDeploymentDescriptorURI()
{
- // TODO
- return null;
+ return webXmlURI;
}
/* -------------------------------------------------------------------------------------- */
- /*
+ /* Get the Document representing the web.xml descriptor
* @return
* @see org.apache.geronimo.web.WebApplication#getDeploymentDescriptorDocument()
*/
public Document getDeploymentDescriptorDocument()
{
- // TODO
- return null;
+ try
+ {
+ parseWebXml();
+ return webXmlDoc;
+ }
+ catch (Exception e)
+ {
+ throw new IllegalStateException(e.toString());
+ }
+
+ }
+
+ public URI getGeronimoDeploymentDescriptorURI()
+ {
+ return geronimoXmlURI;
+ }
+
+ public Document getGeronimoDeploymentDescriptorDocument()
+ {
+ return geronimoXmlDoc;
}
+ public String getGeronimoDeploymentDescriptor()
+ {
+ //TODO
+ return null;
+ }
/* -------------------------------------------------------------------------------------- */
- /*
+ /* Get the URI of the webapp itself
* @return
* @see org.apache.geronimo.web.WebApplication#getURI()
*/
public URI getURI()
{
- // TODO
- return null;
+ return warURI;
+ }
+ /* -------------------------------------------------------------------------------------- */
+ /** Setter for classloading compliance. If true, then classloading will
+ * delegate first to parent classloader a la Java2 spec. If false, then
+ * webapps wanting to load class will try their own context class loader first.
+ * @param state
+ */
+ public void setJava2ClassloadingCompliance(boolean state)
+ {
+ java2ClassloadingCompliance = state;
+ }
+
+ /* -------------------------------------------------------------------------------------- */
+ /**Getter for classloading compliance.
+ * @see setJava2ClassloadingCompliance
+ * @return
+ */
+ public boolean getJava2ClassloadingCompliance()
+ {
+ return java2ClassloadingCompliance;
+ }
+
+ /* -------------------------------------------------------------------------------------- */
+ /** Parse the deployment descriptor, if it hasn't been already
+ *
+ * @exception Exception if an error occurs
+ */
+ protected synchronized void parseWebXml() throws Exception
+ {
+ if (webXmlURI == null)
+ return;
+
+ if (webXmlDoc != null)
+ return;
+
+ webXmlDoc = parser.parse(webXmlURI.toString());
+ }
+
+ protected synchronized void parseGeronimoXml() throws Exception
+ {
+ if (geronimoXmlURI == null)
+ return;
+ if (geronimoXmlDoc != null)
+ return;
+
+ geronimoXmlDoc = parser.parse(geronimoXmlURI.toString());
+ }
+
+ protected void setupENC() throws Exception
+ {
+ //parse the standard descriptor
+ parseWebXml();
+
+ //parse the geronimo web descriptor?
+ parseGeronimoXml();
+
+ //create the java:comp/env context
+ Context enc = null;
+
+ //populate the resources
+
+ //populate the ejbs
+
+ //populate the UserTransaction
+ enc.bind ("UserTransaction", new LinkRef ("javax.transaction.UserTransaction"));
+
+ //populate the security
+
+ //secure the context as read-only (if necessary)
+
}
}
1.3 +138 -24 incubator-geronimo/modules/web/src/java/org/apache/geronimo/web/AbstractWebContainer.java
Index: AbstractWebContainer.java
===================================================================
RCS file: /home/cvs/incubator-geronimo/modules/web/src/java/org/apache/geronimo/web/AbstractWebContainer.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AbstractWebContainer.java 21 Aug 2003 15:02:45 -0000 1.2
+++ AbstractWebContainer.java 23 Aug 2003 09:38:04 -0000 1.3
@@ -55,48 +55,141 @@
*/
package org.apache.geronimo.web;
+import java.net.URI;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
import org.apache.geronimo.common.AbstractContainer;
import org.apache.geronimo.common.Component;
+import org.w3c.dom.Document;
+/* -------------------------------------------------------------------------------------- */
/**
+ * AbstractWebContainer
+ *
* Base class for web containers.
*
* @version $Revision$ $Date$
*/
-public class AbstractWebContainer extends AbstractContainer implements WebContainer {
+public class AbstractWebContainer
+ extends AbstractContainer
+ implements WebContainer
+{
/**
- * Location of the defualt web.xml file
+ * Location of the default web.xml file
*/
- private String defaultWebXmlURL;
+ private URI defaultWebXmlURI = null;
/**
- * Creates a WebApplication from the url and associates it with this container.
- * @param url the location of the web application to deploy
- * @throws Exception
- * @see org.apache.geronimo.web.WebContainer#deploy(java.lang.String)
+ * Parsed default web.xml
+ */
+ private Document defaultWebXmlDoc = null;
+
+
+ /**
+ * Controls unpacking of wars to tmp runtime location
*/
- public void deploy(String url) throws Exception {
+ private boolean unpackWars = true;
+
+
+ private final DocumentBuilder parser;
+
+
+
+ /* -------------------------------------------------------------------------------------- */
+ /**
+ * Constructor
+ */
+ public AbstractWebContainer()
+ {
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ try
+ {
+ parser = factory.newDocumentBuilder();
+ }
+ catch (Exception e)
+ {
+ throw new AssertionError("No XML parser available");
+ }
}
+ /* -------------------------------------------------------------------------------------- */
/**
- * Get the URL of the web defaults.
+ * Creates a WebApplication from the url and associates it with this container.
+ * @param url the location of the web application to deploy
+ * @throws Exception
+ * @see org.apache.geronimo.web.WebContainer#deploy(java.lang.String)
+ */
+ public void deploy(String url) throws Exception
+ {
+ }
+
+ /* -------------------------------------------------------------------------------------- */
+ /**
+ * Get the URI of the web defaults.
* @return the location of the default web.xml file for this container
* @see org.apache.geronimo.web.WebContainer#getDefaultWebXmlURL()
*/
- public String getDefaultWebXmlURL() {
- return defaultWebXmlURL;
+ public URI getDefaultWebXmlURI()
+ {
+ return defaultWebXmlURI;
}
- /**
- * Set a url of a web.xml containing defaults for this continer.
- * @param url the location of the default web.xml file
+ /* -------------------------------------------------------------------------------------- */
+ /**Set a uri of a web.xml containing defaults for this container.
+ * @param uri the location of the default web.xml file
* @see org.apache.geronimo.web.WebContainer#setDefaultWebXmlURL(java.lang.String)
*/
- public void setDefaultWebXmlURL(String url) {
- defaultWebXmlURL = url;
+ public void setDefaultWebXmlURI(URI uri)
+ {
+ defaultWebXmlURI = uri;
+ }
+
+ /* -------------------------------------------------------------------------------------- */
+ /**Get the parsed web defaults
+ * @return
+ */
+ public Document getDefaultWebXmlDoc()
+ {
+ return defaultWebXmlDoc;
}
-
- /* (non-Javadoc)
+
+
+ /* -------------------------------------------------------------------------------------- */
+ /**Parse the web defaults descriptor
+ * @throws Exception
+ */
+ protected void parseWebDefaults() throws Exception
+ {
+ if (defaultWebXmlURI == null)
+ return;
+
+ defaultWebXmlDoc = parser.parse(defaultWebXmlURI.toString());
+ }
+
+ /* -------------------------------------------------------------------------------------- */
+ /*
+ * @return
+ * @see org.apache.geronimo.web.WebContainer#getUnpackWars()
+ */
+ public boolean getUnpackWars()
+ {
+ return unpackWars;
+ }
+
+ /* -------------------------------------------------------------------------------------- */
+ /*
+ * @param state
+ * @see org.apache.geronimo.web.WebContainer#setUnpackWars(boolean)
+ */
+ public void setUnpackWars(boolean state)
+ {
+ unpackWars = state;
+ }
+
+ /* -------------------------------------------------------------------------------------- */
+ /* Add a component to this container's containment hierarchy
* @see org.apache.geronimo.common.Container#addComponent(org.apache.geronimo.common.Component)
*/
public void addComponent(Component component)
@@ -107,9 +200,12 @@
webConnectorAdded((WebConnector)component);
else if (component instanceof WebApplication)
webApplicationAdded((WebApplication)component);
+ else if (component instanceof WebAccessLog)
+ webAccessLogAdded ((WebAccessLog)component);
}
-
- /* (non-Javadoc)
+
+ /* -------------------------------------------------------------------------------------- */
+ /* Remove a component from this container's hierarchy
* @see org.apache.geronimo.common.Container#removeComponent(org.apache.geronimo.common.Component)
*/
public void removeComponent(Component component) throws Exception
@@ -122,6 +218,8 @@
super.removeComponent(component);
}
+
+ /* -------------------------------------------------------------------------------------- */
/**
* Method called by addComponent after a WebConnector has been added.
* @param connector
@@ -130,7 +228,8 @@
{
}
-
+
+ /* -------------------------------------------------------------------------------------- */
/**
* Method called by addComponment after a WebApplication has been added.
* @param connector
@@ -140,15 +239,24 @@
}
+ /* -------------------------------------------------------------------------------------- */
+ /**
+ * @param log
+ */
+ protected void webAccessLogAdded (WebAccessLog log)
+ {
+ }
+
+ /* -------------------------------------------------------------------------------------- */
/**
- * Method called by addComponent before a WebConnector has been removed.
+ * Method called by removeComponent before a WebConnector has been removed.
* @param connector
*/
protected void webConnectorRemoval(WebConnector connector)
{
}
-
+ /* -------------------------------------------------------------------------------------- */
/**
* Method called by removeComponment before a WebApplication has been removed.
* @param connector
@@ -157,5 +265,11 @@
{
}
-
+ /* -------------------------------------------------------------------------------------- */
+ /** Remove an access log service from the container
+ * @param log
+ */
+ protected void webAccessLogRemoval (WebAccessLog log)
+ {
+ }
}
1.3 +22 -1 incubator-geronimo/modules/web/src/java/org/apache/geronimo/web/WebApplication.java
Index: WebApplication.java
===================================================================
RCS file: /home/cvs/incubator-geronimo/modules/web/src/java/org/apache/geronimo/web/WebApplication.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- WebApplication.java 21 Aug 2003 14:36:22 -0000 1.2
+++ WebApplication.java 23 Aug 2003 09:38:04 -0000 1.3
@@ -94,4 +94,25 @@
public URI getDeploymentDescriptorURI();
public Document getDeploymentDescriptorDocument();
+
+ public String getGeronimoDeploymentDescriptor();
+
+ public URI getGeronimoDeploymentDescriptorURI();
+
+ public Document getGeronimoDeploymentDescriptorDocument();
+
+ /* -------------------------------------------------------------------------------------- */
+ /**Getter for the class loader delegation model for this webapp
+ * @return
+ */
+ public boolean getJava2ClassloadingCompliance ();
+
+ /* -------------------------------------------------------------------------------------- */
+ /**Set the class loading delegation model for this web application
+ * @param state
+ */
+ public void setJava2ClassloadingCompliance (boolean state );
+
+
+
}
1.2 +32 -6 incubator-geronimo/modules/web/src/java/org/apache/geronimo/web/WebContainer.java
Index: WebContainer.java
===================================================================
RCS file: /home/cvs/incubator-geronimo/modules/web/src/java/org/apache/geronimo/web/WebContainer.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- WebContainer.java 18 Aug 2003 13:30:41 -0000 1.1
+++ WebContainer.java 23 Aug 2003 09:38:04 -0000 1.2
@@ -56,7 +56,10 @@
package org.apache.geronimo.web;
+import java.net.URI;
+
import org.apache.geronimo.common.Container;
+import org.w3c.dom.Document;
/*
* WebContainer
@@ -70,22 +73,45 @@
/*-------------------------------------------------------------------------------- */
/** Deploy a web application. Convenience method to
* have the container create the WebApplication and add it to itself.
- * @param url
+ * @param uri
* @throws Exception
*/
- public void deploy(String url) throws Exception;
+ public void deploy(String uri) throws Exception;
/*-------------------------------------------------------------------------------- */
/** Set up a web.xml descriptor for the Container to use as
* defaults.
* @param url
*/
- public void setDefaultWebXmlURL(String url);
+ public void setDefaultWebXmlURI(URI uri);
/*-------------------------------------------------------------------------------- */
- /** Get the url of the default web.xml descriptor used
+ /** Get the uri of the default web.xml descriptor used
* by this container.
* @return
*/
- public String getDefaultWebXmlURL();
+ public URI getDefaultWebXmlURI();
+
+
+ /* -------------------------------------------------------------------------------------- */
+ /**Get the parsed web defaults
+ * @return
+ */
+ public Document getDefaultWebXmlDoc ();
+
+
+
+ /* -------------------------------------------------------------------------------------- */
+ /** Control if wars will be unpacked to temporary location or not
+ * @param state
+ */
+ public void setUnpackWars (boolean state);
+
+ /* -------------------------------------------------------------------------------------- */
+ /**Getter for whether wars will be unpacked to temporary location or not
+ * @return
+ */
+ public boolean getUnpackWars ();
+
+
}
1.1 incubator-geronimo/modules/web/src/java/org/apache/geronimo/web/WebAccessLog.java
Index: WebAccessLog.java
===================================================================
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 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 acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Geronimo" 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",
* "Apache Geronimo", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* 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.geronimo.web;
import java.net.URI;
import org.apache.geronimo.common.Component;
/* -------------------------------------------------------------------------------------- */
/**
* WebAccessLog
*
*
* @version $Revision: 1.1 $ $Date: 2003/08/23 09:38:04 $
*/
public interface WebAccessLog extends Component
{
public void setLogLocation (URI uri);
public URI getLogLocation ();
// extendedNCSAFormat
// rollover retention days
// date format
// append
// buffering
}