Interface
Code:
public interface SomeService {
public void setSomething(String something);
public String getSomething();
public void doIt();
}
Class
Code:
@ManagedResource(description="SomeService with a description")
public class SomeServiceImpl implements SomeService {
private String something;
@Override
@ManagedOperation(description="Method doing it.")
public void doIt() {
System.out.println("doing it");
}
@Override
@ManagedAttribute(description="Getting the string Something.")
public String getSomething() {
return this.something;
}
@Override
public void setSomething(String something) {
this.something=something;
}
}
Configuration
Code:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
">
<bean id="someService" class="com.springsource.demo.jmx2.SomeServiceImpl">
<property name="something" value="default value" />
</bean>
<context:mbean-export default-domain="SpringSource-JMX2" />
</beans>
Runner class
Code:
public class Runner {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext-jmx.xml");
SomeService caller = (SomeService) context.getBean("someService");
try {
System.out.println("Start JConsole!");
System.in.read();
System.out.println("END");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
So nothing fancy and I see the description quite clearly...