1 24 25 package org.objectweb.jonas.server; 26 27 29 import java.util.Vector ; 30 31 import org.objectweb.jonas.common.JProp; 32 import org.objectweb.jonas.common.Log; 33 import org.objectweb.jonas.management.j2eemanagement.J2EEManagedObject; 34 import org.objectweb.util.monolog.api.BasicLevel; 35 import org.objectweb.util.monolog.api.Logger; 36 37 41 public class JavaVm extends J2EEManagedObject { 42 43 46 private static final String JAVA_VERSION = "java.version"; 47 48 49 private static final String JAVA_VENDOR = "java.vendor"; 50 51 52 private static final String NODE_LOCAL = "localhost"; 53 54 57 private static Logger sLogger = null; 58 59 61 64 private String javaVersion = null; 65 66 69 private String javaVendor = null; 70 71 74 private String node = null; 75 76 82 public JavaVm(String pObjectName, JProp pProps) { 83 super(pObjectName); 84 javaVersion = pProps.getValue(JAVA_VERSION); 85 javaVendor = pProps.getValue(JAVA_VENDOR); 86 try { 87 java.net.InetAddress oInet = java.net.InetAddress.getLocalHost(); 88 node = oInet.getCanonicalHostName(); 89 } catch (java.net.UnknownHostException e) { 90 node = NODE_LOCAL; 91 } 92 sLogger = Log.getLogger(Log.JONAS_SERVER_PREFIX); 94 } 95 96 101 public String getJavaVersion() { 102 return javaVersion; 103 } 104 105 108 public String getJavaVendor() { 109 return javaVendor; 110 } 111 112 115 public String getNode() { 116 return node; 117 } 118 119 123 protected ThreadGroup getTopLevelThreadGroup() { 124 ThreadGroup parentg = null; 126 ThreadGroup tg = Thread.currentThread().getThreadGroup(); 127 128 while ((parentg = tg.getParent()) != null) { 129 tg = parentg; 130 131 } 132 return tg; 133 } 134 135 138 public int getAllThreadsCount() { 139 140 ThreadGroup tg = getTopLevelThreadGroup(); 141 int realnbthread = 0; 142 synchronized (this) { 143 int count = tg.activeCount(); 145 sLogger.log(BasicLevel.DEBUG, "number of active threads = " + count); 146 Thread [] array = new Thread [count]; 147 tg.enumerate(array, true); 148 for (int j = 0; j < count; j++) { 149 if (array[j] != null) { 150 realnbthread++; 151 } 152 } 153 } 154 return realnbthread; 155 } 156 157 160 public String [] getThreadGroups() { 161 ThreadGroup tg = getTopLevelThreadGroup(); 162 Vector v = new Vector (); 163 synchronized (this) { 164 int counttg = tg.activeGroupCount(); 166 ThreadGroup [] array = new ThreadGroup [counttg]; 167 v.addElement(tg.getName()); 168 tg.enumerate(array, true); 169 for (int i = 0; i < counttg; i++) { 170 if (array[i] != null) { 171 v.addElement(array[i].getName()); 172 } 173 } 174 } 175 String [] ret = new String [v.size()]; 176 v.copyInto(ret); 177 return ret; 178 } 179 180 184 public String [] listThreads(String name) { 185 ThreadGroup tg = getTopLevelThreadGroup(); 186 Vector v = new Vector (); 187 String [] ret = null; 188 synchronized (this) { 189 int counttg = tg.activeGroupCount(); 191 ThreadGroup [] array = new ThreadGroup [counttg]; 192 tg.enumerate(array, true); 193 194 for (int i = 0; i < counttg; i++) { 195 if (array[i].getName() == name) { 196 int counth = tg.activeCount(); 198 Thread [] tharray = new Thread [counth]; 199 array[i].enumerate(tharray); 200 for (int j = 0; j < counth; j++) { 201 if (tharray[j] != null) { 202 v.addElement(tharray[j].getName()); 203 } 204 } 205 ret = new String [v.size()]; 206 v.copyInto(ret); 207 break; 208 } 209 } 210 } 211 return ret; 212 } 213 } | Popular Tags |