2012-12-27 6 views
8

JMXを使用してtomcatでJDBC接続を監視しようとしています。JDBC接続をモニタする

しかし、Datasourceリソースに関する情報しか提供していません。Database.propertiesファイルで定義されている接続のステータスが必要です。

ステータスを取得する方法はありますか?

+0

私は、待ち状態またはブロック状態ではなくビジー状態およびアイドル状態のスレッドの数を必要とします。 – Rupinder

+0

'Database.properties'とは何ですか?どのようにTomcatに関係していますか、これはどのフレームワークですか? – mindas

+0

こんにちはRupinder、あなたはついにこのようなユーティリティを見つけましたか? – JavaTec

答えて

4

JNDIデータソース情報(ビジースレッドやアイドルスレッドなど)以上の情報を要求しています。

私は非常にJMXベースの監視のために、このリソースをお勧めします。

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

2

このサーブレット3.0の例では、あなたが含めorg.apache.tomcat.jdbc.pool.jmx.ConnectionPoolですべての情報を監視することができますアイドルおよびアクティブ接続。

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