如何在 spring 引导中为 JMX 设置身份验证凭据?
how to set authentication credentials for JMX in spring boot?
我在我的 spring boot
应用程序中启用了 JMX
。我能够 set/get 使用 Jconsole
的属性。
我想添加 authentication
(username/password) 以连接到 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 引导应用程序:
-Dcom.sun.management.jmxremote.port=<port>
要配置基于文件的密码身份验证,请添加以下参数:
-Dcom.sun.management.jmxremote.password.file=<file>
有两个预定义用户:monitorRole
和 controlRole
。默认情况下,前者只有读取权限,后者也可以写入(参见 $JRE_HOME/lib/management/jmxremote.access
)。使用 $JRE_HOME/lib/management
中的 jmxremote.password.template
作为密码文件的模板并坚持使用这些用户名。例如:
monitorRole <password>
controlRole <password>
使用您指定的这些用户名和密码之一登录。
请注意,使用此方法时,密码以纯文本形式存储,不 推荐用于生产。请参阅 documentation,了解如何使用 SSL 客户端证书或 LDAP 设置身份验证。
我在我的 spring boot
应用程序中启用了 JMX
。我能够 set/get 使用 Jconsole
的属性。
我想添加 authentication
(username/password) 以连接到 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 引导应用程序:
-Dcom.sun.management.jmxremote.port=<port>
要配置基于文件的密码身份验证,请添加以下参数:
-Dcom.sun.management.jmxremote.password.file=<file>
有两个预定义用户:monitorRole
和 controlRole
。默认情况下,前者只有读取权限,后者也可以写入(参见 $JRE_HOME/lib/management/jmxremote.access
)。使用 $JRE_HOME/lib/management
中的 jmxremote.password.template
作为密码文件的模板并坚持使用这些用户名。例如:
monitorRole <password>
controlRole <password>
使用您指定的这些用户名和密码之一登录。
请注意,使用此方法时,密码以纯文本形式存储,不 推荐用于生产。请参阅 documentation,了解如何使用 SSL 客户端证书或 LDAP 设置身份验证。