001: /*
002: * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/Host.java,v 1.8 2002/02/27 03:13:35 remm Exp $
003: * $Revision: 1.8 $
004: * $Date: 2002/02/27 03:13:35 $
005: *
006: * ====================================================================
007: *
008: * The Apache Software License, Version 1.1
009: *
010: * Copyright (c) 1999 The Apache Software Foundation. All rights
011: * reserved.
012: *
013: * Redistribution and use in source and binary forms, with or without
014: * modification, are permitted provided that the following conditions
015: * are met:
016: *
017: * 1. Redistributions of source code must retain the above copyright
018: * notice, this list of conditions and the following disclaimer.
019: *
020: * 2. Redistributions in binary form must reproduce the above copyright
021: * notice, this list of conditions and the following disclaimer in
022: * the documentation and/or other materials provided with the
023: * distribution.
024: *
025: * 3. The end-user documentation included with the redistribution, if
026: * any, must include the following acknowlegement:
027: * "This product includes software developed by the
028: * Apache Software Foundation (http://www.apache.org/)."
029: * Alternately, this acknowlegement may appear in the software itself,
030: * if and wherever such third-party acknowlegements normally appear.
031: *
032: * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
033: * Foundation" must not be used to endorse or promote products derived
034: * from this software without prior written permission. For written
035: * permission, please contact apache@apache.org.
036: *
037: * 5. Products derived from this software may not be called "Apache"
038: * nor may "Apache" appear in their names without prior written
039: * permission of the Apache Group.
040: *
041: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
042: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
043: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
044: * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
045: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
046: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
047: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
048: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
049: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
050: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
051: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
052: * SUCH DAMAGE.
053: * ====================================================================
054: *
055: * This software consists of voluntary contributions made by many
056: * individuals on behalf of the Apache Software Foundation. For more
057: * information on the Apache Software Foundation, please see
058: * <http://www.apache.org/>.
059: *
060: * [Additional notices, if required by prior licensing conditions]
061: *
062: */
063:
064: package org.apache.catalina;
065:
066: import javax.servlet.ServletContext;
067:
068: /**
069: * A <b>Host</b> is a Container that represents a virtual host in the
070: * Catalina servlet engine. It is useful in the following types of scenarios:
071: * <ul>
072: * <li>You wish to use Interceptors that see every single request processed
073: * by this particular virtual host.
074: * <li>You wish to run Catalina in with a standalone HTTP connector, but still
075: * want support for multiple virtual hosts.
076: * </ul>
077: * In general, you would not use a Host when deploying Catalina connected
078: * to a web server (such as Apache), because the Connector will have
079: * utilized the web server's facilities to determine which Context (or
080: * perhaps even which Wrapper) should be utilized to process this request.
081: * <p>
082: * The parent Container attached to a Host is generally an Engine, but may
083: * be some other implementation, or may be omitted if it is not necessary.
084: * <p>
085: * The child containers attached to a Host are generally implementations
086: * of Context (representing an individual servlet context).
087: *
088: * @author Craig R. McClanahan
089: * @version $Revision: 1.8 $ $Date: 2002/02/27 03:13:35 $
090: */
091:
092: public interface Host extends Container {
093:
094: // ----------------------------------------------------- Manifest Constants
095:
096: /**
097: * The ContainerEvent event type sent when a new alias is added
098: * by <code>addAlias()</code>.
099: */
100: public static final String ADD_ALIAS_EVENT = "addAlias";
101:
102: /**
103: * The ContainerEvent event type sent when an old alias is removed
104: * by <code>removeAlias()</code>.
105: */
106: public static final String REMOVE_ALIAS_EVENT = "removeAlias";
107:
108: // ------------------------------------------------------------- Properties
109:
110: /**
111: * Return the application root for this Host. This can be an absolute
112: * pathname, a relative pathname, or a URL.
113: */
114: public String getAppBase();
115:
116: /**
117: * Set the application root for this Host. This can be an absolute
118: * pathname, a relative pathname, or a URL.
119: *
120: * @param appBase The new application root
121: */
122: public void setAppBase(String appBase);
123:
124: /**
125: * Return the value of the auto deploy flag. If true, it indicates that
126: * this host's child webapps should be discovred and automatically
127: * deployed.
128: */
129: public boolean getAutoDeploy();
130:
131: /**
132: * Set the auto deploy flag value for this host.
133: *
134: * @param autoDeploy The new auto deploy flag
135: */
136: public void setAutoDeploy(boolean autoDeploy);
137:
138: /**
139: * Set the DefaultContext
140: * for new web applications.
141: *
142: * @param defaultContext The new DefaultContext
143: */
144: public void addDefaultContext(DefaultContext defaultContext);
145:
146: /**
147: * Return the canonical, fully qualified, name of the virtual host
148: * this Container represents.
149: */
150: public String getName();
151:
152: /**
153: * Set the canonical, fully qualified, name of the virtual host
154: * this Container represents.
155: *
156: * @param name Virtual host name
157: *
158: * @exception IllegalArgumentException if name is null
159: */
160: public void setName(String name);
161:
162: // --------------------------------------------------------- Public Methods
163:
164: /**
165: * Import the DefaultContext config into a web application context.
166: *
167: * @param context web application context to import default context
168: */
169: public void importDefaultContext(Context context);
170:
171: /**
172: * Add an alias name that should be mapped to this same Host.
173: *
174: * @param alias The alias to be added
175: */
176: public void addAlias(String alias);
177:
178: /**
179: * Return the set of alias names for this Host. If none are defined,
180: * a zero length array is returned.
181: */
182: public String[] findAliases();
183:
184: /**
185: * Return the Context that would be used to process the specified
186: * host-relative request URI, if any; otherwise return <code>null</code>.
187: *
188: * @param uri Request URI to be mapped
189: */
190: public Context map(String uri);
191:
192: /**
193: * Remove the specified alias name from the aliases for this Host.
194: *
195: * @param alias Alias name to be removed
196: */
197: public void removeAlias(String alias);
198:
199: }
|