spring - 如何在 Spring Boot 中设置 JMX 的身份验证凭据?

标签 spring spring-boot spring-jmx

我已在我的 spring boot 应用程序中启用了 JMX。我可以使用 Jconsole 设置/获取属性。 我想添加身份验证(用户名/密码)以连接到MBeanServer。如果可能的话,我更喜欢基于注释。

这是我的JMXBean

@ManagedResource(objectName = "Examples:type=JMX,name=Resource")
public class Resource {
    List<String> items = new ArrayList<>();

    @ManagedAttribute
    public String getLastItem() {
        return items.get(getSize()-1);
    }

    @ManagedAttribute
    public int getSize() {
        return items.size();
    }

    @ManagedOperation
    public void addItem(String item) {
        items.add(item);
    }

    @ManagedOperation
    public String getItem(int pos) {
        return items.get(pos);
    }

    @ManagedOperation
    public List<String> getItems() {
        return items;
    }


}

目前我没有任何 XML 配置。

我在我的配置中初始化了 bean

@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application extends SpringBootServletInitializer {

    public static void main(final String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Override
    protected final SpringApplicationBuilder configure(final SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

    @Bean
    public Resource jmxResource() {
        return new Resource();
    }
}

最佳答案

要启用远程 JMX 访问,您需要使用以下 JVM 参数启动 Spring Boot 应用程序:

-Dcom.sun.management.jmxremote.port=<port>

要配置基于文件的密码身份验证,请添加以下参数:

-Dcom.sun.management.jmxremote.password.file=<file>

有两个预定义用户:monitorRolecontrolRole 。默认情况下,前者仅具有读取访问权限,后者也可以写入(请参阅 $JRE_HOME/lib/management/jmxremote.access )。使用jmxremote.password.template$JRE_HOME/lib/management作为密码文件的模板并坚持使用这些用户名。例如:

monitorRole <password>
controlRole <password>

使用您指定的用户名和密码登录。

请注意,使用此方法时,密码将以纯文本形式存储,建议用于生产用途。请参阅documentation了解如何使用 SSL 客户端证书或 LDAP 设置身份验证。

关于spring - 如何在 Spring Boot 中设置 JMX 的身份验证凭据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31617907/

相关文章:

java - Spring Data Rest - 具有默认值的参数

java - Spring 外部化属性和 logback

java - 更新和删除不适用于 Spring Boot 应用程序

java - SpringBoot运行时动态外部配置Jar文件

java - Spring boot devtools 无法重新启动应用程序

java - 以编程方式启用远程 jmx 监控

java - spring中组件扫描自动创建的bean如何设置Init方法

java - 在存在 XFF header 的情况下将 `AuthenticationFailureBadCredentialsEvent` 与远程地址关联

spring - 如何使用 jSTL 比较 2 个值

notifications - 来自 MBean 的 JMX 通知未监听/订阅。通知会发生什么情况?