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