JavaVm.java

00001 
00025 package org.objectweb.jonas.server;
00026 
00027 // Java imports
00028 
00029 import java.util.Vector;
00030 
00031 import org.objectweb.jonas.common.JProp;
00032 import org.objectweb.jonas.common.Log;
00033 import org.objectweb.jonas.management.j2eemanagement.J2EEManagedObject;
00034 import org.objectweb.util.monolog.api.BasicLevel;
00035 import org.objectweb.util.monolog.api.Logger;
00036 
00041 public class JavaVm extends J2EEManagedObject {
00042 
00043     // ------------------------------------------------------------- Private
00044     // Constants
00046     private static final String JAVA_VERSION = "java.version";
00047 
00049     private static final String JAVA_VENDOR = "java.vendor";
00050 
00052     private static final String NODE_LOCAL = "localhost";
00053 
00054     // ------------------------------------------------------------- Privates
00055     // Variables
00057     private static Logger sLogger = null;
00058 
00059     // ------------------------------------------------------------- Properties
00060 
00064     private String javaVersion = null;
00065 
00069     private String javaVendor = null;
00070 
00074     private String node = null;
00075 
00076     // ------------------------------------------------------------- Contructors
00082     public JavaVm(String pObjectName, JProp pProps) {
00083         super(pObjectName);
00084         javaVersion = pProps.getValue(JAVA_VERSION);
00085         javaVendor = pProps.getValue(JAVA_VENDOR);
00086         try {
00087             java.net.InetAddress oInet = java.net.InetAddress.getLocalHost();
00088             node = oInet.getCanonicalHostName();
00089         } catch (java.net.UnknownHostException e) {
00090             node = NODE_LOCAL;
00091         }
00092         // get a logger for server traces
00093         sLogger = Log.getLogger(Log.JONAS_SERVER_PREFIX);
00094     }
00095 
00096     // ------------------------------------------------------------- Properties
00097     // Methods
00101     public String getJavaVersion() {
00102         return javaVersion;
00103     }
00104 
00108     public String getJavaVendor() {
00109         return javaVendor;
00110     }
00111 
00115     public String getNode() {
00116         return node;
00117     }
00118 
00119     //  ------------------------------------------------------------- Operations
00123     protected ThreadGroup getTopLevelThreadGroup() {
00124         // Get the topLevel ThreadGroup
00125         ThreadGroup parentg = null;
00126         ThreadGroup tg = Thread.currentThread().getThreadGroup();
00127 
00128         while ((parentg = tg.getParent()) != null) {
00129             tg = parentg;
00130 
00131         }
00132         return tg;
00133     }
00134 
00138     public int getAllThreadsCount() {
00139 
00140         ThreadGroup tg = getTopLevelThreadGroup();
00141         int realnbthread = 0;
00142         synchronized (this) {
00143             // Get the number of active threads
00144             int count = tg.activeCount();
00145             sLogger.log(BasicLevel.DEBUG, "number of active threads = " + count);
00146             Thread[] array = new Thread[count];
00147             tg.enumerate(array, true);
00148             for (int j = 0; j < count; j++) {
00149                 if (array[j] != null) {
00150                     realnbthread++;
00151                 }
00152             }
00153         }
00154         return realnbthread;
00155     }
00156 
00160     public String[] getThreadGroups() {
00161         ThreadGroup tg = getTopLevelThreadGroup();
00162         Vector v = new Vector();
00163         synchronized (this) {
00164             // Get the number of active threadGroups
00165             int counttg = tg.activeGroupCount();
00166             ThreadGroup[] array = new ThreadGroup[counttg];
00167             v.addElement(tg.getName());
00168             tg.enumerate(array, true);
00169             for (int i = 0; i < counttg; i++) {
00170                 if (array[i] != null) {
00171                     v.addElement(array[i].getName());
00172                 }
00173             }
00174         }
00175         String[] ret = new String[v.size()];
00176         v.copyInto(ret);
00177         return ret;
00178     }
00179 
00184     public String[] listThreads(String name) {
00185         ThreadGroup tg = getTopLevelThreadGroup();
00186         Vector v = new Vector();
00187         String[] ret = null;
00188         synchronized (this) {
00189             // Get the number of active threadGroups
00190             int counttg = tg.activeGroupCount();
00191             ThreadGroup[] array = new ThreadGroup[counttg];
00192             tg.enumerate(array, true);
00193 
00194             for (int i = 0; i < counttg; i++) {
00195                 if (array[i].getName() == name) {
00196                     // Get the number of active threads
00197                     int counth = tg.activeCount();
00198                     Thread[] tharray = new Thread[counth];
00199                     array[i].enumerate(tharray);
00200                     for (int j = 0; j < counth; j++) {
00201                         if (tharray[j] != null) {
00202                             v.addElement(tharray[j].getName());
00203                         }
00204                     }
00205                     ret = new String[v.size()];
00206                     v.copyInto(ret);
00207                     break;
00208                 }
00209             }
00210         }
00211         return ret;
00212     }
00213 }

Generated on Tue Feb 15 15:05:24 2005 for JOnAS by  doxygen 1.3.9.1