Wrote a fluent builder library for JMX MBean creation

Will Sargent will.sargent at gmail.com
Sun Jan 12 19:25:50 UTC 2020


Hi all,

I've written a library that uses Java 8 functions and some type inference
to create MBeans in a single statement:

class UserExample {
    static final MBeanServer mBeanServer =
ManagementFactory.getPlatformMBeanServer();

    public static void registerUser() throws Exception {
        Address address = new Address("street1", "city", "state");
        final User user = new User("name", 12, address);

        final DynamicMBean userBean = DynamicBean.builder()
                .withSimpleAttribute(String.class, "name",
user::getName, user::setName)
                .withSimpleAttribute(Integer.TYPE, "age",
user::getAge, user::setAge)
                .build();

        ObjectName objectName = new
ObjectName("com.tersesystems.jmxbuilder:type=UserBean,name=User");
        mBeanServer.registerMBean(userBean, objectName);
    }
}


The code's available at https://github.com/tersesystems/jmxbuilder

I wrote a blog post as well explaining the use case -- OpenMBean API
restrictions, no need for annotations or interface/class creation, and
being able build up CompositeData and TabularData  so that more complex
MBeans can be created.  Blog post is here
https://tersesystems.com/blog/2019/12/24/controlling-logging-in-a-running-jvm/

I've also got an MBeanServerInterceptor put together at
https://github.com/tersesystems/jmxmvc although that's a lot more fiddly
and I'm not sure I have the details worked out.

I am probably going to work on automatic registration using using Guice and
Sangria https://tavianator.com/announcing-sangria/ next, so anything
implementing an interface can have a JMX bean created for it, without tying
the interface directly to JMX implementation.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/serviceability-dev/attachments/20200112/c49ecaaf/attachment.htm>


More information about the serviceability-dev mailing list