| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You 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; |
| |
| import org.apache.tomcat.util.digester.Digester; |
| import org.apache.tomcat.util.digester.RuleSet; |
| |
| /** |
| * <strong>RuleSet</strong> for processing the contents of a Cluster definition element. |
| */ |
| public class ClusterRuleSet implements RuleSet { |
| |
| |
| // ----------------------------------------------------- Instance Variables |
| |
| |
| /** |
| * The matching pattern prefix to use for recognizing our elements. |
| */ |
| protected final String prefix; |
| |
| |
| // ------------------------------------------------------------ Constructor |
| |
| |
| /** |
| * Construct an instance of this <code>RuleSet</code> with the default matching pattern prefix. |
| */ |
| public ClusterRuleSet() { |
| this(""); |
| } |
| |
| |
| /** |
| * Construct an instance of this <code>RuleSet</code> with the specified matching pattern prefix. |
| * |
| * @param prefix Prefix for matching pattern rules (including the trailing slash character) |
| */ |
| public ClusterRuleSet(String prefix) { |
| this.prefix = prefix; |
| } |
| |
| |
| // --------------------------------------------------------- Public Methods |
| |
| |
| @Override |
| public void addRuleInstances(Digester digester) { |
| // Cluster configuration start |
| digester.addObjectCreate(prefix + "Manager", null, // MUST be specified in the element |
| "className"); |
| digester.addSetProperties(prefix + "Manager"); |
| digester.addSetNext(prefix + "Manager", "setManagerTemplate", "org.apache.catalina.ha.ClusterManager"); |
| digester.addObjectCreate(prefix + "Manager/SessionIdGenerator", |
| "org.apache.catalina.util.StandardSessionIdGenerator", "className"); |
| digester.addSetProperties(prefix + "Manager/SessionIdGenerator"); |
| digester.addSetNext(prefix + "Manager/SessionIdGenerator", "setSessionIdGenerator", |
| "org.apache.catalina.SessionIdGenerator"); |
| |
| digester.addObjectCreate(prefix + "Channel", null, // MUST be specified in the element |
| "className"); |
| digester.addSetProperties(prefix + "Channel"); |
| digester.addSetNext(prefix + "Channel", "setChannel", "org.apache.catalina.tribes.Channel"); |
| |
| |
| String channelPrefix = prefix + "Channel/"; |
| |
| // channel properties |
| digester.addObjectCreate(channelPrefix + "Membership", null, // MUST be specified in the element |
| "className"); |
| digester.addSetProperties(channelPrefix + "Membership"); |
| digester.addSetNext(channelPrefix + "Membership", "setMembershipService", |
| "org.apache.catalina.tribes.MembershipService"); |
| |
| // add |
| digester.addObjectCreate(channelPrefix + "Membership/LocalMember", null, // MUST be specified in the element |
| "className"); |
| digester.addSetProperties(channelPrefix + "Membership/LocalMember"); |
| digester.addSetNext(channelPrefix + "Membership/LocalMember", "setLocalMember", |
| "org.apache.catalina.tribes.membership.StaticMember"); |
| digester.addObjectCreate(channelPrefix + "Membership/Member", null, // MUST be specified in the element |
| "className"); |
| digester.addSetProperties(channelPrefix + "Membership/Member"); |
| digester.addSetNext(channelPrefix + "Membership/Member", "addStaticMember", |
| "org.apache.catalina.tribes.membership.StaticMember"); |
| // add end |
| |
| digester.addObjectCreate(channelPrefix + "MembershipListener", null, // MUST be specified in the element |
| "className"); |
| digester.addSetProperties(channelPrefix + "MembershipListener"); |
| digester.addSetNext(channelPrefix + "MembershipListener", "addMembershipListener", |
| "org.apache.catalina.tribes.MembershipListener"); |
| |
| digester.addObjectCreate(channelPrefix + "Sender", null, // MUST be specified in the element |
| "className"); |
| digester.addSetProperties(channelPrefix + "Sender"); |
| digester.addSetNext(channelPrefix + "Sender", "setChannelSender", "org.apache.catalina.tribes.ChannelSender"); |
| |
| digester.addObjectCreate(channelPrefix + "Sender/Transport", null, // MUST be specified in the element |
| "className"); |
| digester.addSetProperties(channelPrefix + "Sender/Transport"); |
| digester.addSetNext(channelPrefix + "Sender/Transport", "setTransport", |
| "org.apache.catalina.tribes.transport.MultiPointSender"); |
| |
| |
| digester.addObjectCreate(channelPrefix + "Receiver", null, // MUST be specified in the element |
| "className"); |
| digester.addSetProperties(channelPrefix + "Receiver"); |
| digester.addSetNext(channelPrefix + "Receiver", "setChannelReceiver", |
| "org.apache.catalina.tribes.ChannelReceiver"); |
| |
| digester.addObjectCreate(channelPrefix + "Interceptor", null, // MUST be specified in the element |
| "className"); |
| digester.addSetProperties(channelPrefix + "Interceptor"); |
| digester.addSetNext(channelPrefix + "Interceptor", "addInterceptor", |
| "org.apache.catalina.tribes.ChannelInterceptor"); |
| |
| digester.addObjectCreate(channelPrefix + "Interceptor/LocalMember", null, // MUST be specified in the element |
| "className"); |
| digester.addSetProperties(channelPrefix + "Interceptor/LocalMember"); |
| digester.addSetNext(channelPrefix + "Interceptor/LocalMember", "setLocalMember", |
| "org.apache.catalina.tribes.Member"); |
| |
| digester.addObjectCreate(channelPrefix + "Interceptor/Member", null, // MUST be specified in the element |
| "className"); |
| digester.addSetProperties(channelPrefix + "Interceptor/Member"); |
| digester.addSetNext(channelPrefix + "Interceptor/Member", "addStaticMember", |
| "org.apache.catalina.tribes.Member"); |
| |
| digester.addObjectCreate(channelPrefix + "ChannelListener", null, // MUST be specified in the element |
| "className"); |
| digester.addSetProperties(channelPrefix + "ChannelListener"); |
| digester.addSetNext(channelPrefix + "ChannelListener", "addChannelListener", |
| "org.apache.catalina.tribes.ChannelListener"); |
| |
| digester.addObjectCreate(prefix + "Valve", null, // MUST be specified in the element |
| "className"); |
| digester.addSetProperties(prefix + "Valve"); |
| digester.addSetNext(prefix + "Valve", "addValve", "org.apache.catalina.Valve"); |
| |
| digester.addObjectCreate(prefix + "Deployer", null, // MUST be specified in the element |
| "className"); |
| digester.addSetProperties(prefix + "Deployer"); |
| digester.addSetNext(prefix + "Deployer", "setClusterDeployer", "org.apache.catalina.ha.ClusterDeployer"); |
| |
| digester.addObjectCreate(prefix + "Listener", null, // MUST be specified in the element |
| "className"); |
| digester.addSetProperties(prefix + "Listener"); |
| digester.addSetNext(prefix + "Listener", "addLifecycleListener", "org.apache.catalina.LifecycleListener"); |
| |
| digester.addObjectCreate(prefix + "ClusterListener", null, // MUST be specified in the element |
| "className"); |
| digester.addSetProperties(prefix + "ClusterListener"); |
| digester.addSetNext(prefix + "ClusterListener", "addClusterListener", "org.apache.catalina.ha.ClusterListener"); |
| // Cluster configuration end |
| } |
| |
| } |