VisualVM's JMX API entrypoints available in VisualVM-Tools module

It's more than likely that VisualVM plugin developers will be interested in accessing their JMX instrumented applications from within VisualVM. The VisualVM-Tools module adds some public APIs for JMX-related things in the com.sun.tools.visualvm.tools.jmx package required to get access to the underlying JMX connection and also to retrieve the JVM MXBeans that will grant access to the underlying JVM instrumentation. Then writing a JMX-based plugin for VisualVM is as simple as defining your custom UI and fill it in with the information coming from the JMX model.

Find below some examples of use:

  • JmxModel: getting access to the JMX connection for the given application

  • JmxModel jmx = JmxModelFactory.getJmxModelFor(application);
    if (jmx == null || jmx.getConnectionState() != JmxModel.ConnectionState.CONNECTED) {
        // JMX connection not available...
    } else {
        MBeanServerConnection mbsc = jmx.getMBeanServerConnection();
        if (mbsc != null) {
            // Invoke JMX operations...
        }
    }
    

  • JvmMXBeans: getting access to the JVM instrumentation for the given application

  • JmxModel jmxModel = JmxModelFactory.getJmxModelFor(application);
    if (jmxModel != null && jmxModel.getConnectionState() == ConnectionState.CONNECTED) {
        JvmMXBeans mxbeans = JvmMXBeansFactory.getJvmMXBeans(jmxModel);
        if (mxbeans != null) {
            MemoryMXBean memoryMXBean = mxbeans.getMemoryMXBean();
            // Get/Set attributes or Invoke operations on MemoryMXBean...
        }
    }
    

  • CachedMBeanServerConnection: JmxModel and JvmMXBeans attributes caching
  • In order to reduce the number of network roundtrips between the JMX clients running in the VisualVM tool and the JMX servers running in the target VMs, save some bandwidth and improve overall performance you can cache both the JMX model and the JVM instrumentation MBeans attributes values for a given interval and register MBean cache listeners that will be notified when the MBean cache has been flushed such that the presentation layers can be updated with the new values by simply calling the getter methods in the MBeans. Have a look at CachedMBeanServerConnectionFactory and JvmMXBeansFactory to have more detailed info on these APIs.

Comments:

Post a Comment:
  • HTML Syntax: NOT allowed
About

lmalvent

Search

Categories
Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today