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: import java.util.Map;
021:
022: import org.apache.catalina.Cluster;
023: import org.apache.catalina.LifecycleException;
024: import org.apache.catalina.Manager;
025: import org.apache.catalina.Valve;
026: import org.apache.catalina.tribes.Channel;
027: import org.apache.catalina.tribes.Member;
028: import org.apache.juli.logging.Log;
029:
030: /**
031: * A <b>CatalinaCluster</b> interface allows to plug in and out the
032: * different cluster implementations
033: *
034: * @author Filip Hanik
035: * @version $Revision: 467222 $, $Date: 2006-10-24 05:17:11 +0200 (mar., 24 oct. 2006) $
036: */
037:
038: public interface CatalinaCluster extends Cluster {
039: // ----------------------------------------------------- Instance Variables
040:
041: /**
042: * Descriptive information about this component implementation.
043: */
044: public String info = "CatalinaCluster/2.0";
045:
046: /**
047: * Start the cluster, the owning container will invoke this
048: * @throws Exception - if failure to start cluster
049: */
050: public void start() throws Exception;
051:
052: /**
053: * Stops the cluster, the owning container will invoke this
054: * @throws LifecycleException
055: */
056: public void stop() throws LifecycleException;
057:
058: /**
059: * Returns the associates logger with this cluster.
060: *
061: * @return Log
062: */
063: public Log getLogger();
064:
065: /**
066: * Sends a message to all the members in the cluster
067: * @param msg ClusterMessage
068: */
069: public void send(ClusterMessage msg);
070:
071: /**
072: * Sends a message to a specific member in the cluster.
073: *
074: * @param msg ClusterMessage
075: * @param dest Member
076: */
077: public void send(ClusterMessage msg, Member dest);
078:
079: /**
080: * Sends a message to a all members at local cluster domain
081: *
082: * @param msg ClusterMessage
083: */
084: public void sendClusterDomain(ClusterMessage msg);
085:
086: /**
087: * Returns that cluster has members.
088: */
089: public boolean hasMembers();
090:
091: /**
092: * Returns all the members currently participating in the cluster.
093: *
094: * @return Member[]
095: */
096: public Member[] getMembers();
097:
098: /**
099: * Return the member that represents this node.
100: *
101: * @return Member
102: */
103: public Member getLocalMember();
104:
105: public void addValve(Valve valve);
106:
107: public void addClusterListener(ClusterListener listener);
108:
109: public void removeClusterListener(ClusterListener listener);
110:
111: public void setClusterDeployer(ClusterDeployer deployer);
112:
113: public ClusterDeployer getClusterDeployer();
114:
115: /**
116: * @return The map of managers
117: */
118: public Map getManagers();
119:
120: public Manager getManager(String name);
121:
122: public String getManagerName(String name, Manager manager);
123:
124: public Valve[] getValves();
125:
126: public void setChannel(Channel channel);
127:
128: public Channel getChannel();
129:
130: }
|