| /* |
| * Copyright 1999,2004 The Apache Software Foundation. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package org.apache.catalina; |
| |
| import java.io.IOException; |
| import java.net.URL; |
| /** |
| * A <b>Cluster</b> works as a Cluster client/server for the local host |
| * Different Cluster implementations can be used to support different |
| * ways to communicate within the Cluster. A Cluster implementation is |
| * responsible for setting up a way to communicate within the Cluster |
| * and also supply "ClientApplications" with <code>ClusterSender</code> |
| * used when sending information in the Cluster and |
| * <code>ClusterInfo</code> used for receiving information in the Cluster. |
| * |
| * @author Bip Thelin |
| * @author Remy Maucherat |
| * @author Filip Hanik |
| * @version $Revision$, $Date$ |
| */ |
| |
| public interface Cluster { |
| |
| // ------------------------------------------------------------- Properties |
| |
| /** |
| * Return descriptive information about this Cluster implementation and |
| * the corresponding version number, in the format |
| * <code><description>/<version></code>. |
| */ |
| public String getInfo(); |
| |
| /** |
| * Return the name of the cluster that this Server is currently |
| * configured to operate within. |
| * |
| * @return The name of the cluster associated with this server |
| */ |
| public String getClusterName(); |
| |
| /** |
| * Set the name of the cluster to join, if no cluster with |
| * this name is present create one. |
| * |
| * @param clusterName The clustername to join |
| */ |
| public void setClusterName(String clusterName); |
| |
| /** |
| * Set the Container associated with our Cluster |
| * |
| * @param container The Container to use |
| */ |
| public void setContainer(Container container); |
| |
| /** |
| * Get the Container associated with our Cluster |
| * |
| * @return The Container associated with our Cluster |
| */ |
| public Container getContainer(); |
| |
| /** |
| * Set the protocol parameters. |
| * |
| * @param protocol The protocol used by the cluster |
| */ |
| public void setProtocol(String protocol); |
| |
| /** |
| * Get the protocol used by the cluster. |
| * |
| * @return The protocol |
| */ |
| public String getProtocol(); |
| |
| // --------------------------------------------------------- Public Methods |
| |
| /** |
| * Create a new manager which will use this cluster to replicate its |
| * sessions. |
| * |
| * @param name Name (key) of the application with which the manager is |
| * associated |
| */ |
| public Manager createManager(String name); |
| |
| // --------------------------------------------------------- Cluster Wide Deployments |
| |
| |
| /** |
| * Execute a periodic task, such as reloading, etc. This method will be |
| * invoked inside the classloading context of this container. Unexpected |
| * throwables will be caught and logged. |
| */ |
| public void backgroundProcess(); |
| |
| |
| /** |
| * Start an existing web application, attached to the specified context |
| * path in all the other nodes in the cluster. |
| * Only starts a web application if it is not running. |
| * |
| * @param contextPath The context path of the application to be started |
| * |
| * @exception IllegalArgumentException if the specified context path |
| * is malformed (it must be "" or start with a slash) |
| * @exception IllegalArgumentException if the specified context path does |
| * not identify a currently installed web application |
| * @exception IOException if an input/output error occurs during |
| * startup |
| */ |
| public void startContext(String contextPath) throws IOException; |
| |
| |
| /** |
| * Install a new web application, whose web application archive is at the |
| * specified URL, into this container with the specified context path. |
| * A context path of "" (the empty string) should be used for the root |
| * application for this container. Otherwise, the context path must |
| * start with a slash. |
| * <p> |
| * If this application is successfully installed, a ContainerEvent of type |
| * <code>PRE_INSTALL_EVENT</code> will be sent to registered listeners |
| * before the associated Context is started, and a ContainerEvent of type |
| * <code>INSTALL_EVENT</code> will be sent to all registered listeners |
| * after the associated Context is started, with the newly created |
| * <code>Context</code> as an argument. |
| * |
| * @param contextPath The context path to which this application should |
| * be installed (must be unique) |
| * @param war A URL of type "jar:" that points to a WAR file, or type |
| * "file:" that points to an unpacked directory structure containing |
| * the web application to be installed |
| * |
| * @exception IllegalArgumentException if the specified context path |
| * is malformed (it must be "" or start with a slash) |
| * @exception IllegalStateException if the specified context path |
| * is already attached to an existing web application |
| */ |
| public void installContext(String contextPath, URL war); |
| |
| /** |
| * Stop an existing web application, attached to the specified context |
| * path. Only stops a web application if it is running. |
| * |
| * @param contextPath The context path of the application to be stopped |
| * |
| * @exception IllegalArgumentException if the specified context path |
| * is malformed (it must be "" or start with a slash) |
| * @exception IllegalArgumentException if the specified context path does |
| * not identify a currently installed web application |
| * @exception IOException if an input/output error occurs while stopping |
| * the web application |
| */ |
| public void stop(String contextPath) throws IOException; |
| |
| |
| } |