I'm trying to add some code to monitor my jdbc data connection pool.  Each time a connection is requested, I have some jmx code that logs values from the datasource mbean.  I haven't done much jmx coding.  So consider me a rookie on this topic.  I found some code on the web that does pretty much what I need. The relevant part of the code:

          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.dbcp.pool2.impl.GenericObjectPool"))  {
                  for (MBeanAttributeInfo mf : info.getAttributes()) {

This code works.  The problem is that I have a bunch of virtual hosts running on the same instance of TC.  So I get a bunch of matching mbeans, apparently one for each virtual host / resource defined.

Is there any way to identify which mbean is for the datasource I currently care about?  I was hoping there would be an attribute with the datasource name or the database name or even just some way to add a unique identifier when I create it.  But I don't see anything.  I've resorted to having maxTotal set to incrementally different values in all of my resource statements just so I can identify the datasource I'm looking at in the logs.  But that's a hack.

Is there a better way to uniquely identify datasource mbeans in jmx?

Thx



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to