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: EjbHaCluster.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 Philippe Durieux
038: */
039: public class EjbHaCluster extends BaseCluster implements
040: EjbHaClusterMBean {
041:
042: /**
043: * The type of Cluster, that is part of the MBean ObjectName
044: */
045: protected String type = "EjbHaCluster";
046:
047: /**
048: * multicast addr
049: */
050: private String mcastAddr = null;
051:
052: /**
053: * multicast port
054: */
055: private int mcastPort;
056:
057: /**
058: * HA cluster constructor
059: * @param cf ClusterFactory
060: * @throws JMException could not create MBean instance
061: */
062: public EjbHaCluster(EjbHaClusterFactory cf) throws JMException {
063: super (cf);
064: }
065:
066: public ClusterMember createClusterMember(String svname,
067: ServerProxy proxy) {
068: return new EjbHaClusterMember(svname, proxy);
069: }
070:
071: // --------------------------------------------------------------------------
072: // Other public methods
073: // --------------------------------------------------------------------------
074:
075: /**
076: * @return The String type to be put in the ObjectName
077: */
078: public String getType() {
079: return type;
080: }
081:
082: public String getMcastAddr() {
083: return mcastAddr;
084: }
085:
086: public void setMcastAddr(String mcastAddr) {
087: this .mcastAddr = mcastAddr;
088: }
089:
090: public int getMcastPort() {
091: return mcastPort;
092: }
093:
094: public void setMcastPort(int mcastPort) {
095: this .mcastPort = mcastPort;
096: }
097:
098: /**
099: * Add a CMI Server to the list of the Cluster
100: * Make link between the member and the ServerProxy.
101: * @param serverName name of the managed server which corresponds to a Tomcat session replication cluster memeber
102: * @param proxy The ServerProxy related object.
103: * @return True if correctly added in the List.
104: */
105: public boolean addHaServer(String serverName, ServerProxy proxy) {
106:
107: // create the EjbHaClusterMember instance ( = a jonas server)
108: EjbHaClusterMember ha = new EjbHaClusterMember(serverName,
109: proxy);
110:
111: // Add this member if not already there
112: boolean added = addMember(ha);
113: if (added) {
114: // Build the ObjectName and register MBean
115: try {
116: ObjectName on = JonasObjectName.clusterMember(
117: serverName, getType(), name);
118: ha.setObjectName(on);
119: MBeanServer mbeanServer = jmx.getJmxServer();
120: if (mbeanServer.isRegistered(on)) {
121: mbeanServer.unregisterMBean(on);
122: }
123: mbeanServer.registerMBean(ha, on);
124: } catch (JMException e) {
125: logger.log(BasicLevel.WARN, "Cannot register tomcat "
126: + serverName + ": " + e);
127: }
128: }
129: return added;
130: }
131:
132: }
|