001: /**
002: * JOnAS: Java(TM) Open Application Server
003: * Copyright (C) 2006 Bull S.A.
004: * Contact: jonas-team@objectweb.org
005: *
006: * This library is free software; you can redistribute it and/or
007: * modify it under the terms of the GNU Lesser General Public
008: * License as published by the Free Software Foundation; either
009: * version 2.1 of the License, or any later version.
010: *
011: * This library is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * Lesser General Public License for more details.
015: *
016: * You should have received a copy of the GNU Lesser General Public
017: * License along with this library; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
019: * USA
020: *
021: * --------------------------------------------------------------------------
022: * $Id: TomcatCluster.java 9758 2006-10-18 06:28:50Z durieuxp $
023: * --------------------------------------------------------------------------
024: */package org.objectweb.jonas.management.cluster;
025:
026: import javax.management.JMException;
027: import javax.management.MBeanServer;
028: import javax.management.ObjectName;
029:
030: import org.objectweb.jonas.jmx.JonasObjectName;
031: import org.objectweb.jonas.management.monitoring.ServerProxy;
032:
033: import org.objectweb.util.monolog.api.BasicLevel;
034:
035: /**
036: * Implements Tomcat Cluster MBean
037: * @author Adriana Danes, Philippe Durieux
038: */
039: public class TomcatCluster extends BaseCluster implements
040: TomcatClusterMBean {
041:
042: private String host = null;
043: /**
044: * The type of Cluster, that is part of the MBean ObjectName
045: */
046: protected String type = "TomcatCluster";
047:
048: /**
049: *
050: */
051: private String mcastAddr = null;
052:
053: /**
054: *
055: */
056: private long mcastDropTime;
057:
058: /**
059: *
060: */
061: private long mcastFrequency;
062:
063: /**
064: *
065: */
066: private int mcastPort;
067:
068: /**
069: *
070: */
071: private int mcastSocketTimeout;
072:
073: /**
074: * Tomcat cluster constructor
075: * @param cf ClusterFactory
076: * @throws JMException could not create MBean instance
077: */
078: public TomcatCluster(TomcatClusterFactory cf) throws JMException {
079: super (cf);
080: }
081:
082: /**
083: * Should never be called, as by definition, we can't create a 'physical' cluster
084: * member via an administration program or a tool.
085: * (only automatic creation is possible via addTomcatServer method)
086: */
087: public ClusterMember createClusterMember(String svname,
088: ServerProxy proxy) {
089: logger.log(BasicLevel.WARN,
090: "Cannot correctly create tomcat cluster member "
091: + svname);
092: return new TomcatClusterMember(svname, host, proxy);
093: }
094:
095: // --------------------------------------------------------------------------
096: // Other public methods
097: // --------------------------------------------------------------------------
098:
099: /**
100: * @return The String type to be put in the ObjectName
101: */
102: public String getType() {
103: return type;
104: }
105:
106: /**
107: * Add a Tomcat Server to the list of the TomcatCluster.
108: * Make link between the member and the ServerProxy.
109: * @param serverName name of the managed server which corresponds to a Tomcat session replication cluster memeber
110: * @param proxy The ServerProxy related object.
111: * @return True if correctly added in the List.
112: */
113: public boolean addTomcatServer(String serverName, ServerProxy proxy) {
114: // Create the TomcatClusterMember instance ( = a tomcat server)
115: String domainName = proxy.getDomain();
116: TomcatClusterMember tomcat = new TomcatClusterMember(
117: serverName, host, proxy);
118: // Set configuration parameters
119: tomcat.setInfo();
120: // Add this member if not already there
121: boolean added = addMember(tomcat);
122: if (added) {
123: // Build the ObjectName and register MBean
124: try {
125: ObjectName on = JonasObjectName.clusterMember(
126: serverName, getType(), name);
127: tomcat.setObjectName(on);
128: MBeanServer mbeanServer = jmx.getJmxServer();
129: if (mbeanServer.isRegistered(on)) {
130: mbeanServer.unregisterMBean(on);
131: }
132: mbeanServer.registerMBean(tomcat, on);
133: } catch (JMException e) {
134: logger.log(BasicLevel.WARN, "Cannot register tomcat "
135: + serverName + ": " + e);
136: }
137: }
138: return added;
139: }
140:
141: public String getMcastAddr() {
142: return mcastAddr;
143: }
144:
145: public long getMcastDropTime() {
146: return mcastDropTime;
147: }
148:
149: public long getMcastFrequency() {
150: return mcastFrequency;
151: }
152:
153: public int getMcastPort() {
154: return mcastPort;
155: }
156:
157: public int getMcastSocketTimeout() {
158: return mcastSocketTimeout;
159: }
160:
161: public void setMcastAddr(String mcastAddr) {
162: this .mcastAddr = mcastAddr;
163: }
164:
165: public void setMcastDropTime(long mcastDropTime) {
166: this .mcastDropTime = mcastDropTime;
167: }
168:
169: public void setMcastFrequency(long mcastFrequency) {
170: this .mcastFrequency = mcastFrequency;
171: }
172:
173: public void setMcastPort(int mcastPort) {
174: this .mcastPort = mcastPort;
175: }
176:
177: public void setMcastSocketTimeout(int mcastSocketTimeout) {
178: this .mcastSocketTimeout = mcastSocketTimeout;
179: }
180:
181: public String getHost() {
182: return host;
183: }
184:
185: public void setHost(String host) {
186: this.host = host;
187: }
188: }
|