2012-12-27 22 views
8

JMX kullanarak tomcat'ta JDBC bağlantılarını izlemeye çalışıyorum.monitor JDBC bağlantıları

Ancak, yalnızca Veri kaynağı kaynakları hakkında bilgi veriyor, Database.properties dosyasında tanımlı bağlantı durumunu istiyorum.

Durumlarını almanın bir yolu var mı?

+0

Sadece meşgul ve boştaki iş parçacıklarının sayısını bekleme veya blok durumu değil istiyorum. – Rupinder

+0

'Database.properties' nedir? Tomcat ile nasıl bağlantılıdır, bu çerçeve nedir? – mindas

+0

Merhaba Rupinder, sonunda böyle bir yardımcı program buldunuz mu? – JavaTec

cevap

4

JNDI DataSource bilgilerinden (meşgul ve boşta kalma iş parçacıkları gibi) daha fazla bilgi istemektedir. Eğer dahil org.apache.tomcat.jdbc.pool.jmx.ConnectionPool tüm bilgileri izleyebilir

http://wiki.apache.org/tomcat/FAQ/Monitoring

2

bu Servlet 3.0 örnekle:

ederim JMX tabanlı izlenmesi için bu kaynağı tavsiye Boşta ve Aktif bağlantılar.

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