|
Here is a short list of links related to this Tomcat StatusTransformer.java source code file:
Tomcat example source code file (StatusTransformer.java)
The Tomcat StatusTransformer.java source code/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.catalina.manager; import java.io.IOException; import java.io.PrintWriter; import java.lang.reflect.Method; import java.text.MessageFormat; import java.util.Date; import java.util.Enumeration; import java.util.Iterator; import java.util.Set; import java.util.Vector; import javax.management.MBeanServer; import javax.management.ObjectInstance; import javax.management.ObjectName; import javax.servlet.ServletException; import javax.servlet.http.HttpServletResponse; import org.apache.catalina.util.RequestUtil; /** * This is a refactoring of the servlet to externalize * the output into a simple class. Although we could * use XSLT, that is unnecessarily complex. * * @author Peter Lin * @version $Revision: 467222 $ $Date: 2006-10-24 05:17:11 +0200 (mar., 24 oct. 2006) $ */ public class StatusTransformer { // --------------------------------------------------------- Public Methods public static void setContentType(HttpServletResponse response, int mode) { if (mode == 0){ response.setContentType("text/html;charset="+Constants.CHARSET); } else if (mode == 1){ response.setContentType("text/xml;charset="+Constants.CHARSET); } } /** * Process a GET request for the specified resource. * * @param request The servlet request we are processing * @param response The servlet response we are creating * * @exception IOException if an input/output error occurs * @exception ServletException if a servlet-specified error occurs */ public static void writeHeader(PrintWriter writer, int mode) { if (mode == 0){ // HTML Header Section writer.print(Constants.HTML_HEADER_SECTION); } else if (mode == 1){ writer.write(Constants.XML_DECLARATION); writer.write (Constants.XML_STYLE); writer.write("<status>"); } } /** * Write the header body. XML output doesn't bother * to output this stuff, since it's just title. * * @param writer The output writer * @param args What to write * @param mode 0 means write */ public static void writeBody(PrintWriter writer, Object[] args, int mode) { if (mode == 0){ writer.print(MessageFormat.format (Constants.BODY_HEADER_SECTION, args)); } } /** * Write the manager webapp information. * * @param writer The output writer * @param args What to write * @param mode 0 means write */ public static void writeManager(PrintWriter writer, Object[] args, int mode) { if (mode == 0){ writer.print(MessageFormat.format(Constants.MANAGER_SECTION, args)); } } public static void writePageHeading(PrintWriter writer, Object[] args, int mode) { if (mode == 0){ writer.print(MessageFormat.format (Constants.SERVER_HEADER_SECTION, args)); } } public static void writeServerInfo(PrintWriter writer, Object[] args, int mode){ if (mode == 0){ writer.print(MessageFormat.format(Constants.SERVER_ROW_SECTION, args)); } } /** * */ public static void writeFooter(PrintWriter writer, int mode) { if (mode == 0){ // HTML Tail Section writer.print(Constants.HTML_TAIL_SECTION); } else if (mode == 1){ writer.write("</status>"); } } /** * Write the OS state. Mode 0 will generate HTML. * Mode 1 will generate XML. */ public static void writeOSState(PrintWriter writer, int mode) { long[] result = new long[16]; boolean ok = false; try { String methodName = "info"; Class paramTypes[] = new Class[1]; paramTypes[0] = result.getClass(); Object paramValues[] = new Object[1]; paramValues[0] = result; Method method = Class.forName("org.apache.tomcat.jni.OS") .getMethod(methodName, paramTypes); method.invoke(null, paramValues); ok = true; } catch (Throwable t) { // Ignore } if (ok) { if (mode == 0){ writer.print("<h1>OS"); writer.print("<p>"); writer.print(" Physical memory: "); writer.print(formatSize(new Long(result[0]), true)); writer.print(" Available memory: "); writer.print(formatSize(new Long(result[1]), true)); writer.print(" Total page file: "); writer.print(formatSize(new Long(result[2]), true)); writer.print(" Free page file: "); writer.print(formatSize(new Long(result[3]), true)); writer.print(" Memory load: "); writer.print(new Long(result[6])); writer.print("<br>"); writer.print(" Process kernel time: "); writer.print(formatTime(new Long(result[11] / 1000), true)); writer.print(" Process user time: "); writer.print(formatTime(new Long(result[12] / 1000), true)); writer.print("</p>"); } else if (mode == 1){ } } } /** * Write the VM state. Mode 0 will generate HTML. * Mode 1 will generate XML. */ public static void writeVMState(PrintWriter writer, int mode) throws Exception { if (mode == 0){ writer.print("<h1>JVM"); writer.print("<p>"); writer.print(" Free memory: "); writer.print(formatSize (new Long(Runtime.getRuntime().freeMemory()), true)); writer.print(" Total memory: "); writer.print(formatSize (new Long(Runtime.getRuntime().totalMemory()), true)); writer.print(" Max memory: "); writer.print(formatSize (new Long(Runtime.getRuntime().maxMemory()), true)); writer.print("</p>"); } else if (mode == 1){ writer.write("<jvm>"); writer.write("<memory"); writer.write(" free='" + Runtime.getRuntime().freeMemory() + "'"); writer.write(" total='" + Runtime.getRuntime().totalMemory() + "'"); writer.write(" max='" + Runtime.getRuntime().maxMemory() + "'/>"); writer.write("</jvm>"); } } /** * Write connector state. */ public static void writeConnectorState(PrintWriter writer, ObjectName tpName, String name, MBeanServer mBeanServer, Vector globalRequestProcessors, Vector requestProcessors, int mode) throws Exception { if (mode == 0) { writer.print("<h1>"); writer.print(name); writer.print("</h1>"); writer.print("<p>"); writer.print(" Max threads: "); writer.print(mBeanServer.getAttribute(tpName, "maxThreads")); writer.print(" Current thread count: "); writer.print(mBeanServer.getAttribute(tpName, "currentThreadCount")); writer.print(" Current thread busy: "); writer.print(mBeanServer.getAttribute(tpName, "currentThreadsBusy")); try { Object value = mBeanServer.getAttribute(tpName, "keepAliveCount"); writer.print(" Keeped alive sockets count: "); writer.print(value); } catch (Exception e) { // Ignore } writer.print("<br>"); ObjectName grpName = null; Enumeration enumeration = globalRequestProcessors.elements(); while (enumeration.hasMoreElements()) { ObjectName objectName = (ObjectName) enumeration.nextElement(); if (name.equals(objectName.getKeyProperty("name"))) { grpName = objectName; } } if (grpName == null) { return; } writer.print(" Max processing time: "); writer.print(formatTime(mBeanServer.getAttribute (grpName, "maxTime"), false)); writer.print(" Processing time: "); writer.print(formatTime(mBeanServer.getAttribute (grpName, "processingTime"), true)); writer.print(" Request count: "); writer.print(mBeanServer.getAttribute(grpName, "requestCount")); writer.print(" Error count: "); writer.print(mBeanServer.getAttribute(grpName, "errorCount")); writer.print(" Bytes received: "); writer.print(formatSize(mBeanServer.getAttribute (grpName, "bytesReceived"), true)); writer.print(" Bytes sent: "); writer.print(formatSize(mBeanServer.getAttribute (grpName, "bytesSent"), true)); writer.print("</p>"); writer.print("<table border=\"0\"> | ||||||
Stage | Time | B Sent | B Recv | Client | VHost | Request |
---|---|---|---|---|---|---|
? | ? | ? | ? | ? |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.