⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simpletcpcluster.java

📁 精通tomcat书籍原代码,希望大家共同学习
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/* * Copyright 1999,2004-2005 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.ha.tcp;import java.beans.PropertyChangeSupport;import java.io.IOException;import java.io.Serializable;import java.net.URL;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import org.apache.catalina.Container;import org.apache.catalina.Context;import org.apache.catalina.Engine;import org.apache.catalina.Host;import org.apache.catalina.Lifecycle;import org.apache.catalina.LifecycleEvent;import org.apache.catalina.LifecycleException;import org.apache.catalina.LifecycleListener;import org.apache.catalina.Manager;import org.apache.catalina.Valve;import org.apache.catalina.ha.CatalinaCluster;import org.apache.catalina.tribes.Channel;import org.apache.catalina.tribes.ChannelListener;import org.apache.catalina.ha.ClusterListener;import org.apache.catalina.ha.ClusterManager;import org.apache.catalina.ha.ClusterMessage;import org.apache.catalina.ha.ClusterValve;import org.apache.catalina.tribes.Member;import org.apache.catalina.tribes.MembershipListener;import org.apache.catalina.tribes.group.GroupChannel;import org.apache.catalina.ha.session.DeltaManager;import org.apache.catalina.ha.util.IDynamicProperty;import org.apache.catalina.util.LifecycleSupport;import org.apache.catalina.util.StringManager;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.apache.tomcat.util.IntrospectionUtils;/** * A <b>Cluster </b> implementation using simple multicast. Responsible for * setting up a cluster and provides callers with a valid multicast * receiver/sender. *  * FIXME remove install/remove/start/stop context dummys * FIXME wrote testcases  *  * @author Filip Hanik * @author Remy Maucherat * @author Peter Rossbach * @version $Revision: 379550 $, $Date: 2006-02-21 12:06:35 -0600 (Tue, 21 Feb 2006) $ */public class SimpleTcpCluster     implements CatalinaCluster, Lifecycle, LifecycleListener, IDynamicProperty,               MembershipListener, ChannelListener{    public static Log log = LogFactory.getLog(SimpleTcpCluster.class);    // ----------------------------------------------------- Instance Variables    /**     * Descriptive information about this component implementation.     */    protected static final String info = "SimpleTcpCluster/2.2";    public static final String BEFORE_MEMBERREGISTER_EVENT = "before_member_register";    public static final String AFTER_MEMBERREGISTER_EVENT = "after_member_register";    public static final String BEFORE_MANAGERREGISTER_EVENT = "before_manager_register";    public static final String AFTER_MANAGERREGISTER_EVENT = "after_manager_register";    public static final String BEFORE_MANAGERUNREGISTER_EVENT = "before_manager_unregister";    public static final String AFTER_MANAGERUNREGISTER_EVENT = "after_manager_unregister";    public static final String BEFORE_MEMBERUNREGISTER_EVENT = "before_member_unregister";    public static final String AFTER_MEMBERUNREGISTER_EVENT = "after_member_unregister";    public static final String SEND_MESSAGE_FAILURE_EVENT = "send_message_failure";    public static final String RECEIVE_MESSAGE_FAILURE_EVENT = "receive_message_failure";        /**     * Group channel.     */    protected Channel channel = new GroupChannel();    /**     * Name for logging purpose     */    protected String clusterImpName = "SimpleTcpCluster";    /**     * The string manager for this package.     */    protected StringManager sm = StringManager.getManager(Constants.Package);    /**     * The cluster name to join     */    protected String clusterName ;    /**     * The Container associated with this Cluster.     */    protected Container container = null;    /**     * The lifecycle event support for this component.     */    protected LifecycleSupport lifecycle = new LifecycleSupport(this);    /**     * Has this component been started?     */    protected boolean started = false;    /**     * The property change support for this component.     */    protected PropertyChangeSupport support = new PropertyChangeSupport(this);    /**     * The context name <->manager association for distributed contexts.     */    protected Map managers = new HashMap();    private String managerClassName = "org.apache.catalina.ha.session.DeltaManager";    private List valves = new ArrayList();    private org.apache.catalina.ha.ClusterDeployer clusterDeployer;    /**     * Listeners of messages     */    protected List clusterListeners = new ArrayList();    /**     * Comment for <code>notifyLifecycleListenerOnFailure</code>     */    private boolean notifyLifecycleListenerOnFailure = false;    /**     * dynamic sender <code>properties</code>     */    private Map properties = new HashMap();        private int channelSendOptions =         Channel.SEND_OPTIONS_ASYNCHRONOUS |        Channel.SEND_OPTIONS_SYNCHRONIZED_ACK |        Channel.SEND_OPTIONS_USE_ACK;    // ------------------------------------------------------------- Properties    public SimpleTcpCluster() {    }    /**     * Return descriptive information about this Cluster implementation and the     * corresponding version number, in the format     * <code>&lt;description&gt;/&lt;version&gt;</code>.     */    public String getInfo() {        return (info);    }    /**     * 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) {        this.clusterName = clusterName;    }    /**     * 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() {        if(clusterName == null && container != null)            return container.getName() ;        return clusterName;    }    /**     * Set the Container associated with our Cluster     *      * @param container     *            The Container to use     */    public void setContainer(Container container) {        Container oldContainer = this.container;        this.container = container;        support.firePropertyChange("container", oldContainer, this.container);    }    /**     * Get the Container associated with our Cluster     *      * @return The Container associated with our Cluster     */    public Container getContainer() {        return (this.container);    }    /**     * @return Returns the notifyLifecycleListenerOnFailure.     */    public boolean isNotifyLifecycleListenerOnFailure() {        return notifyLifecycleListenerOnFailure;    }    /**     * @param notifyListenerOnFailure     *            The notifyLifecycleListenerOnFailure to set.     */    public void setNotifyLifecycleListenerOnFailure(            boolean notifyListenerOnFailure) {        boolean oldNotifyListenerOnFailure = this.notifyLifecycleListenerOnFailure;        this.notifyLifecycleListenerOnFailure = notifyListenerOnFailure;        support.firePropertyChange("notifyLifecycleListenerOnFailure",                oldNotifyListenerOnFailure,                this.notifyLifecycleListenerOnFailure);    }    public String getManagerClassName() {        if(managerClassName != null)            return managerClassName;        return (String)getProperty("manager.className");    }    public void setManagerClassName(String managerClassName) {        this.managerClassName = managerClassName;    }    /**     * Add cluster valve      * Cluster Valves are only add to container when cluster is started!     * @param valve The new cluster Valve.     */    public void addValve(Valve valve) {        if (valve instanceof ClusterValve)            valves.add(valve);    }    /**     * get all cluster valves     * @return current cluster valves     */    public Valve[] getValves() {        return (Valve[]) valves.toArray(new Valve[valves.size()]);    }    /**     * Get the cluster listeners associated with this cluster. If this Array has     * no listeners registered, a zero-length array is returned.     */    public ClusterListener[] findClusterListeners() {        if (clusterListeners.size() > 0) {            ClusterListener[] listener = new ClusterListener[clusterListeners.size()];            clusterListeners.toArray(listener);            return listener;        } else            return new ClusterListener[0];    }    /**     * add cluster message listener and register cluster to this listener     *      * @see org.apache.catalina.ha.CatalinaCluster#addClusterListener(org.apache.catalina.ha.MessageListener)     */    public void addClusterListener(ClusterListener listener) {        if (listener != null && !clusterListeners.contains(listener)) {            clusterListeners.add(listener);            listener.setCluster(this);        }    }    /**

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -