Why is Spring Boot 2.5.0 JMX Beans not showing in JConsole

1.1k Views Asked by At

Using Spring Boot 2.1.6.RELEASE for JMX Beans are working correctly or they are shown in Jconsole but in 2.5.0 it does not. The following is my simple application using spring boot 2.5.0.

If you want to try version 2.1.6.RELEASE, just change the spring-boot-starter-parent version to 2.1.6.RELEASE and the JMX Beans will work.

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.0</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

DemoApplication.java

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import java.io.IOException;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) throws IOException {
        SpringApplication.run(DemoApplication.class, args);

        System.out.print("Press [ENTER] to quit:");
        System.in.read();
    }
}

JmxEndpoint.java

package com.example.demo;

import org.springframework.jmx.export.annotation.ManagedOperation;
import org.springframework.jmx.export.annotation.ManagedResource;
import org.springframework.stereotype.Component;

@Component
@ManagedResource
public class JmxEndpoint {
    @ManagedOperation
    public void printMessage() {
    }
}
1

There are 1 best solutions below

0
On BEST ANSWER

Setting spring.jmx.enabled=true in application.properties file is the solution. They have disabled it by default in newer versions including 2.5.0.

Reference: https://github.com/spring-projects/spring-boot/issues/16090