2012-12-27 46 views
8

Tôi đang cố giám sát các kết nối JDBC trong tomcat bằng JMX.theo dõi kết nối JDBC

Nhưng nó chỉ cung cấp thông tin liên quan đến tài nguyên Nguồn dữ liệu, tôi muốn trạng thái kết nối được xác định trong tệp Database.properties.

Có cách nào để nhận trạng thái của họ không?

+0

Tôi chỉ muốn số luồng bận và nhàn rỗi không phải trạng thái chờ hoặc chặn. – Rupinder

+0

'Database.properties' là gì? Làm thế nào là nó liên quan đến Tomcat, khung là gì? – mindas

+0

Hi Rupinder, cuối cùng bạn đã tìm được một tiện ích như vậy chưa? – JavaTec

Trả lời

4

Bạn đang yêu cầu nhiều hơn thông tin JNDI DataSource (chẳng hạn như các chủ đề bận và nhàn rỗi).

tôi khuyên bạn nên nguồn tài nguyên này để theo dõi JMX dựa trên:

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

2

Với Servlet 3.0 ví dụ này, bạn có thể theo dõi tất cả các thông tin trong org.apache.tomcat.jdbc.pool.jmx.ConnectionPool bao gồm các kết nối nhàn rỗi và hoạt động.

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>"); 
    } 
} 
Các vấn đề liên quan