2012-12-27 21 views
8

Próbuję monitorować połączenia JDBC w tomcat za pomocą JMX.monitor połączenia JDBC

Ale podaje tylko informacje dotyczące zasobów Datasource, chcę status połączenia zdefiniowany w pliku Database.properties.

Czy istnieje sposób na uzyskanie ich statusu?

+0

Chcę tylko liczbę zajętych i wolnych wątków, a nie status oczekiwania lub blok. – Rupinder

+0

Co to jest "Database.properties"? Jak to się ma do Tomcat, jakie to jest ramy? – mindas

+0

Cześć Rupinder, czy w końcu znalazłeś takie narzędzie? – JavaTec

Odpowiedz

2

Z tego apletu 3,0 Przykładowo można monitorować wszystkie informacje w tym org.apache.tomcat.jdbc.pool.jmx.ConnectionPool połączenia bezczynne i aktywne.

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>"); 
    } 
}