package utils;
public class MXBeanServlet{
/*
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.lang.management.*;
import java.util.List;
import org.jdom.*;
import org.jdom.output.*;
public class MXBeanServlet extends HttpServlet
{
public void init() throws ServletException
{
ServletContext ctx = getServletContext();
}
public void service( HttpServletRequest req, HttpServletResponse res ) throws ServletException
{
try
{
System.out.println( "MXBeanServlet invoked..." );
Element root = new Element( "management-info" );
// Get class loading info
ClassLoadingMXBean clBean=ManagementFactory.getClassLoadingMXBean();
// Get memory info
MemoryMXBean memusage = ManagementFactory.getMemoryMXBean();
// Get runtime information
RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean();
// Get operating system info
OperatingSystemMXBean operatingSys = ManagementFactory.getOperatingSystemMXBean();
// Garbage Collection
List<GarbageCollectorMXBean> garbageCollectorMXBeans = ManagementFactory.getGarbageCollectorMXBeans();
// Handle thread info
ThreadMXBean threads = ManagementFactory.getThreadMXBean();
Element threadsElement = new Element( "threads" );
threadsElement.setAttribute( "thread-count", Long.toString( threads.getThreadCount() ) );
threadsElement.setAttribute( "total-started-thread-count", Long.toString( threads.getTotalStartedThreadCount() ) );
threadsElement.setAttribute( "daemon-thread-count", Long.toString( threads.getDaemonThreadCount() ) );
threadsElement.setAttribute( "peak-thread-count", Long.toString( threads.getPeakThreadCount() ) );
long totalCpuTime = 0l;
long totalUserTime = 0l;
// Parse each thread
ThreadInfo[] threadInfos = threads.getThreadInfo( threads.getAllThreadIds() );
for( int i=0; i<threadInfos.length; i++ )
{
Element threadElement = new Element( "thread" );
threadElement.setAttribute( "id", Long.toString( threadInfos[ i ].getThreadId() ) );
threadElement.setAttribute( "name", threadInfos[ i ].getThreadName() );
threadElement.setAttribute( "cpu-time-nano", Long.toString( threads.getThreadCpuTime( threadInfos[ i ].getThreadId() ) ) );
threadElement.setAttribute( "cpu-time-ms", Long.toString( threads.getThreadCpuTime( threadInfos[ i ].getThreadId() ) / 1000000l ) );
threadElement.setAttribute( "user-time-nano", Long.toString( threads.getThreadUserTime( threadInfos[ i ].getThreadId() ) ) );
threadElement.setAttribute( "user-time-ms", Long.toString( threads.getThreadUserTime( threadInfos[ i ].getThreadId() ) / 1000000l ) );
threadElement.setAttribute( "blocked-count", Long.toString( threadInfos[ i ].getBlockedCount() ) );
threadElement.setAttribute( "blocked-time", Long.toString( threadInfos[ i ].getBlockedTime() ) );
threadElement.setAttribute( "waited-count", Long.toString( threadInfos[ i ].getWaitedCount() ) );
threadElement.setAttribute( "waited-time", Long.toString( threadInfos[ i ].getWaitedTime() ) );
threadsElement.addContent( threadElement );
// Update our aggregate values
totalCpuTime += threads.getThreadCpuTime( threadInfos[ i ].getThreadId() );
totalUserTime += threads.getThreadUserTime( threadInfos[ i ].getThreadId() );
}
long totalCpuTimeMs = totalCpuTime / 1000000l;
long totalUserTimeMs = totalUserTime / 1000000l;
threadsElement.setAttribute( "total-cpu-time-nano", Long.toString( totalCpuTime ) );
threadsElement.setAttribute( "total-user-time-nano", Long.toString( totalUserTime ) );
threadsElement.setAttribute( "total-cpu-time-ms", Long.toString( totalCpuTimeMs ) );
threadsElement.setAttribute( "total-user-time-ms", Long.toString( totalUserTimeMs ) );
//root.addContent( threadsElement );
// Memory Usage Info
MemoryUsage heapMemoryUsage = memusage.getHeapMemoryUsage();
MemoryUsage nonHeapMemoryUsage = memusage.getNonHeapMemoryUsage();
int objectPendingFinalizationCount = memusage.getObjectPendingFinalizationCount();
threadsElement.setAttribute( "heap-memory-max", Long.toString( heapMemoryUsage.getMax()) );
threadsElement.setAttribute( "heap-memory-used", Long.toString( heapMemoryUsage.getUsed()) );
threadsElement.setAttribute( "heap-memory-init", Long.toString( heapMemoryUsage.getInit()) );
threadsElement.setAttribute( "heap-memory-commited", Long.toString( heapMemoryUsage.getCommitted()) );
threadsElement.setAttribute( "nonheap-memory-max", Long.toString( nonHeapMemoryUsage.getMax()) );
threadsElement.setAttribute( "nonheap-memory-used", Long.toString( nonHeapMemoryUsage.getUsed()) );
threadsElement.setAttribute( "nonheap-memory-init", Long.toString( nonHeapMemoryUsage.getInit()) );
threadsElement.setAttribute( "nonheap-memory-commited", Long.toString( nonHeapMemoryUsage.getCommitted()) );
threadsElement.setAttribute( "memory-object-pending-finalization", Integer.toString( objectPendingFinalizationCount) );
// Operating System
String name = operatingSys.getName();
String version = operatingSys.getVersion();
String arch = operatingSys.getArch();
int availableProcessors = operatingSys.getAvailableProcessors();
double systemLoadAverage = operatingSys.getSystemLoadAverage();
threadsElement.setAttribute( "opsys-name", name);
threadsElement.setAttribute( "opsys-version", version);
threadsElement.setAttribute( "opsys-arch", arch);
threadsElement.setAttribute( "opsys-available-processors", Integer.toString(availableProcessors));
threadsElement.setAttribute( "opsys-system-load-avg", Double.toString(systemLoadAverage));
threadsElement.setAttribute( "garbage-collector-mbeans-size", Integer.toString(garbageCollectorMXBeans.size()));
// Compute thread percentages
long uptime = runtime.getUptime();
threadsElement.setAttribute( "uptime", Long.toString( uptime ) );
double cpuPercentage = ( ( double )totalCpuTimeMs / ( double )uptime ) * 100.0;
double userPercentage = ( ( double )totalUserTimeMs / ( double )uptime ) * 100.0;
threadsElement.setAttribute( "total-cpu-percent", Double.toString( cpuPercentage ) );
threadsElement.setAttribute( "total-user-percent", Double.toString( userPercentage ) );
threadsElement.setAttribute( "loaded-class-count", Integer.toString(clBean.getLoadedClassCount()) );
threadsElement.setAttribute( "total-loaded-class-count", Long.toString(clBean.getTotalLoadedClassCount()) );
threadsElement.setAttribute( "unloaded-class-count", Long.toString(clBean.getUnloadedClassCount()) );
root.addContent( threadsElement );
// Output the XML to the caller
XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat());
//XMLOutputter outputter = new XMLOutputter( "\t", true );
outputter.output( root, res.getOutputStream() );
}
catch( Exception e )
{
e.printStackTrace();
throw new ServletException( e );
}
}
*
*
* */
}