I have enabled JMX
in my spring boot
application. I am able to set/get properties on using Jconsole
.
I want to add authentication
(username/password) for connecting to the MBeanServer
. I prefer annotation based if possible.
Here is my 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;
}
}
Currently I do not have any XML
configuration.
I have the bean initialized in my configuration
@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();
}
}