如何在Spring启动时为JMX设置身份验证凭据?

时间:2015-07-24 19:00:01

标签: spring spring-boot spring-jmx

我在spring boot申请中启用了Jconsole。我可以使用authentication设置/获取属性。 我想添加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

目前我没有任何@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(); } } 配置。

我在配置中初始化了bean

{{1}}

1 个答案:

答案 0 :(得分:3)

要启用远程 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>

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

请注意,使用此方法时,密码以纯文本格式存储, <推荐用于生产用途。有关如何使用SSL客户端证书或LDAP设置身份验证的信息,请参阅documentation