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: CmiCluster.java 9764 2006-10-19 07:53:13Z 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 Philippe Durieux
038: */
039: public class CmiCluster extends BaseCluster implements CmiClusterMBean {
040:
041: /**
042: * The type of Cluster, that is part of the MBean ObjectName
043: */
044: protected String type = "CmiCluster";
045:
046: /**
047: * mcast port
048: */
049: protected int mcastPort;
050:
051: /**
052: * mcast addr
053: */
054: protected String mcastAddr;
055:
056: /**
057: * protocol used
058: */
059: protected String protocol;
060:
061: /**
062: * CMI cluster constructor
063: * @param cf ClusterFactory
064: * @throws JMException could not create MBean instance
065: */
066: public CmiCluster(CmiClusterFactory cf) throws JMException {
067: super (cf);
068: }
069:
070: public ClusterMember createClusterMember(String svname,
071: ServerProxy proxy) {
072: return new CmiClusterMember(svname, proxy);
073: }
074:
075: // --------------------------------------------------------------------------
076: // Other public methods
077: // --------------------------------------------------------------------------
078:
079: /**
080: * @return the mcast port
081: */
082: public int getMcastPort() {
083: return mcastPort;
084: }
085:
086: /**
087: * Set the multicast port
088: */
089: public void setMcastPort(int port) {
090: mcastPort = port;
091: }
092:
093: /**
094: * @return the mcast addr
095: */
096: public String getMcastAddr() {
097: return mcastAddr;
098: }
099:
100: /**
101: * Set the multicast addr
102: */
103: public void setMcastAddr(String addr) {
104: mcastAddr = addr;
105: }
106:
107: /**
108: * @return the protocol
109: */
110: public String getProtocol() {
111: return protocol;
112: }
113:
114: /**
115: * Set the protocol
116: */
117: public void setProtocol(String proto) {
118: protocol = proto;
119: }
120:
121: /**
122: * @return The String type to be put in the ObjectName
123: */
124: public String getType() {
125: return type;
126: }
127:
128: /**
129: * Add a CMI Server to the list of the Cluster
130: * Make link between the member and the ServerProxy.
131: * @param serverName name of the managed server which corresponds to a Tomcat session replication cluster memeber
132: * @param proxy The ServerProxy related object.
133: * @return True if correctly added in the List.
134: */
135: public boolean addCmiServer(String serverName, ServerProxy proxy) {
136:
137: // create the CmiClusterMember instance ( = a jonas server)
138: CmiClusterMember cmi = new CmiClusterMember(serverName, proxy);
139:
140: // Add this member if not already there
141: boolean added = addMember(cmi);
142: if (added) {
143: // Build the ObjectName and register MBean
144: try {
145: ObjectName on = JonasObjectName.clusterMember(
146: serverName, getType(), name);
147: cmi.setObjectName(on);
148: MBeanServer mbeanServer = jmx.getJmxServer();
149: if (mbeanServer.isRegistered(on)) {
150: mbeanServer.unregisterMBean(on);
151: }
152: mbeanServer.registerMBean(cmi, on);
153: } catch (JMException e) {
154: logger.log(BasicLevel.WARN, "Cannot register tomcat "
155: + serverName + ": " + e);
156: }
157: }
158: return added;
159: }
160:
161: }
|