001: /*
002: * Copyright 1999,2004 The Apache Software Foundation.
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016:
017: package org.apache.catalina.cluster;
018:
019: /**
020: * A <b>ClusterDeployer</b> interface allows to plug in and out the
021: * different deployment implementations
022: *
023: * @author Filip Hanik
024: * @version $Revision: 1.1 $, $Date: 2004/06/04 20:22:27 $
025: */
026: import org.apache.catalina.LifecycleException;
027: import org.apache.catalina.Deployer;
028: import java.io.IOException;
029: import java.net.URL;
030:
031: public interface ClusterDeployer extends MessageListener {
032: /**
033: * Returns the cluster the cluster deployer is associated with
034: * @return CatalinaCluster
035: */
036: public CatalinaCluster getCluster();
037:
038: /**
039: * Associates the cluster deployer with a cluster
040: * @param cluster CatalinaCluster
041: */
042: public void setCluster(CatalinaCluster cluster);
043:
044: /**
045: * Descriptive information about this component implementation.
046: */
047: public String info = "ClusterDeployer/1.0";
048:
049: /**
050: * Start the cluster deployer, the owning container will invoke this
051: * @throws Exception - if failure to start cluster
052: */
053: public void start() throws Exception;
054:
055: /**
056: * Stops the cluster deployer, the owning container will invoke this
057: * @throws LifecycleException
058: */
059: public void stop() throws LifecycleException;
060:
061: /**
062: * Sets the deployer for this cluster deployer to use.
063: * @param deployer Deployer
064: */
065: public void setDeployer(Deployer deployer);
066:
067: /**
068: * Install a new web application, whose web application archive is at the
069: * specified URL, into this container and all the other
070: * members of the cluster with the specified context path.
071: * A context path of "" (the empty string) should be used for the root
072: * application for this container. Otherwise, the context path must
073: * start with a slash.
074: * <p>
075: * If this application is successfully installed locally,
076: * a ContainerEvent of type
077: * <code>INSTALL_EVENT</code> will be sent to all registered listeners,
078: * with the newly created <code>Context</code> as an argument.
079: *
080: * @param contextPath The context path to which this application should
081: * be installed (must be unique)
082: * @param war A URL of type "jar:" that points to a WAR file, or type
083: * "file:" that points to an unpacked directory structure containing
084: * the web application to be installed
085: *
086: * @exception IllegalArgumentException if the specified context path
087: * is malformed (it must be "" or start with a slash)
088: * @exception IllegalStateException if the specified context path
089: * is already attached to an existing web application
090: * @exception IOException if an input/output error was encountered
091: * during installation
092: */
093: public void install(String contextPath, URL war) throws IOException;
094:
095: /**
096: * Remove an existing web application, attached to the specified context
097: * path. If this application is successfully removed, a
098: * ContainerEvent of type <code>REMOVE_EVENT</code> will be sent to all
099: * registered listeners, with the removed <code>Context</code> as
100: * an argument. Deletes the web application war file and/or directory
101: * if they exist in the Host's appBase.
102: *
103: * @param contextPath The context path of the application to be removed
104: * @param undeploy boolean flag to remove web application from server
105: *
106: * @exception IllegalArgumentException if the specified context path
107: * is malformed (it must be "" or start with a slash)
108: * @exception IllegalArgumentException if the specified context path does
109: * not identify a currently installed web application
110: * @exception IOException if an input/output error occurs during
111: * removal
112: */
113: public void remove(String contextPath, boolean undeploy)
114: throws IOException;
115: }
|