1 17 18 package org.apache.geronimo.clustering; 19 20 import java.util.Map ; 21 22 import javax.management.ObjectName ; 23 24 import org.apache.commons.logging.Log; 25 import org.apache.commons.logging.LogFactory; 26 27 34 public abstract class 35 Tier 36 extends NamedMBeanImpl 37 { 38 protected Log _log=LogFactory.getLog(Tier.class); 39 protected Data _data; 40 protected Map _tiers; 41 protected Object _tier; 42 43 44 53 public static ObjectName 54 makeObjectName(String clusterName, String nodeName, String tierName) 55 throws Exception 56 { 57 return new ObjectName ("geronimo.clustering:role=Tier,name="+tierName+",node="+nodeName+",cluster="+clusterName); 58 } 59 60 64 protected Node _node; 65 public Node getNode(){return _node;} 66 67 public ObjectName getNodeObjectName(){return _node==null?null:_node.getObjectName();} 68 69 public String getClusterName(){return _objectName.getKeyProperty("cluster");} 70 public String getNodeName(){return _objectName.getKeyProperty("node");} 71 72 protected abstract Object alloc(); 73 public abstract Object registerData(String uid, Object data); 74 public abstract Object deregisterData(String uid); 75 76 80 public boolean 81 canStart() 82 { 83 if (!super.canStart()) return false; 84 85 if (_objectName.getKeyProperty("cluster")==null) 86 { 87 _log.warn("Tier MBean name must contain a 'cluster' property"); 88 return false; 89 } 90 91 if (_objectName.getKeyProperty("node")==null) 92 { 93 _log.warn("Tier MBean name must contain a 'node' property"); 94 return false; 95 } 96 97 try 98 { 99 _node=(Node)_server.getAttribute(Node.makeObjectName(getClusterName(), getNodeName()), "Reference"); 100 _log.debug("Node: "+_node); 101 } 102 catch (Exception e) 103 { 104 _log.error("could not find Node", e); 105 return false; 106 } 107 108 return true; 109 } 110 111 public synchronized void 112 doStart() 113 { 114 _log.info("starting"); 115 116 Data data=_node.getData(); 118 _tiers=data.getTiers(); _tier=null; 120 synchronized (_tiers) 121 { 122 _tier=_tiers.get(getName()); 123 if (_tier==null) 124 { 125 _tier=alloc(); 126 _tiers.put(getName(), _tier); 127 } 128 } 130 _log.info("Node Data:"+data); 131 } 132 140 152 } 153 | Popular Tags |