2012-12-27 14 views
8

Sto provando a monitorare le connessioni JDBC in tomcat utilizzando JMX.monitor connessioni JDBC

Ma sta fornendo informazioni solo per quanto riguarda le risorse dell'origine dati, voglio lo stato di connessione definito nel file Database.properties.

C'è un modo per ottenere il loro stato?

+0

Voglio solo il numero di thread occupati e inattivi non lo stato di attesa o di blocco. – Rupinder

+0

Che cos'è 'Database.properties'? Com'è collegato a Tomcat, che struttura è questa? – mindas

+0

Ciao Rupinder, hai finalmente trovato una tale utilità? – JavaTec

risposta

2

Con questo Servlet 3.0 esempio è possibile monitorare tutte le informazioni nel org.apache.tomcat.jdbc.pool.jmx.ConnectionPool compreso le connessioni Idle e Active.

import java.io.IOException; 
import java.io.PrintWriter; 
import java.lang.management.ManagementFactory; 
import java.util.Set; 
import javax.management.MBeanAttributeInfo; 
import javax.management.MBeanInfo; 
import javax.management.MBeanServer; 
import javax.management.ObjectName; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
@WebServlet("/poolmonitor") 
public class HelloServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 
    @Override 
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
      throws ServletException, IOException { 
     PrintWriter writer = resp.getWriter(); 
     writer.println("<!DOCTYPE html>"); 
     writer.println("<html>"); 
     writer.println("<body>"); 
     writer.println("<p><h1>Tomcat Pool</h1></p><p>"); 
     try { 
      MBeanServer server = ManagementFactory.getPlatformMBeanServer(); 
      Set<ObjectName> objectNames = server.queryNames(null, null); 
      for (ObjectName name : objectNames) { 
       MBeanInfo info = server.getMBeanInfo(name); 
       if (info.getClassName().equals(
         "org.apache.tomcat.jdbc.pool.jmx.ConnectionPool")) { 
        for (MBeanAttributeInfo mf : info.getAttributes()) { 
         Object attributeValue = server.getAttribute(name, 
           mf.getName()); 
         if (attributeValue != null) { 
          writer.println("" + mf.getName() + " : " 
            + attributeValue.toString() + "<br/>"); 

         } 
        } 
        break; 
       } 
      } 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     writer.println("</p></body>"); 
     writer.println("</html>"); 
    } 
} 
Problemi correlati