JMX代码编写

来源:互联网 发布:天庭淘宝店 下载 编辑:程序博客网 时间:2024/05/29 03:01
  1. public class Controller implements ControllerMBean{
  2. private boolean forbiddenBrand = false;
  3. @Override
  4. public boolean isForbiddenBrand() {
  5. return forbiddenBrand;
  6. }
  7. @Override
  8. public void setForbiddenBrand(boolean forbiddenBrand) {
  9. this.forbiddenBrand = forbiddenBrand;
  10. }
  11. @Override
  12. public String status() {
  13. // TODO Auto-generated method stub
  14. return null;
  15. }
  16. @Override
  17. public void start() {
  18. // TODO Auto-generated method stub
  19. }
  20. @Override
  21. public void stop() {
  22. // TODO Auto-generated method stub
  23. }
  24. }

ControllerControllerMBean 类名称不能修改,必须固定
  1. public interface ControllerMBean {
  2. public boolean isForbiddenBrand();
  3. public void setForbiddenBrand(boolean forbiddenBrand);
  4. //操作
  5. /**
  6. * 获取当前信息
  7. * @return
  8. */
  9. public String status();
  10. public void start();
  11. public void stop();
  12. }

动态修改BrandPackageValidator.FORBIDDEN_BRAND字段
  1. public class JmxExecutor {
  2. /**
  3. * 默认生成的该类的LOG记录器,使用slf4j组件。避免产生编译警告,使用protected修饰符。
  4. */
  5. protected final static Logger LOG = LoggerFactory.getLogger(JmxExecutor.class);
  6. private final static ControllerMBean controller = new Controller();
  7. static {
  8. Executors.newScheduledThreadPool(1).scheduleAtFixedRate(new Runnable() {
  9. @Override
  10. public void run() {
  11. BrandPackageValidator.FORBIDDEN_BRAND = controller.isForbiddenBrand();
  12. }
  13. }, 2, 5, TimeUnit.SECONDS);
  14. }
  15. public void executor() {
  16. // 获得MBeanServer实例
  17. MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
  18. try {
  19. mbs.registerMBean(controller, new ObjectName("apiJmx:name=controller"));
  20. // 创建适配器,用于能够通过浏览器访问MBean
  21. HtmlAdaptorServer adapter = new HtmlAdaptorServer();
  22. adapter.setPort(9797);
  23. mbs.registerMBean(adapter, new ObjectName("apiJmx:name=htmladapter,port=9797"));
  24. adapter.start();
  25. } catch (Exception e) {
  26. LOG.error("jxm运行出错", e);
  27. }
  28. }
  29. }
pom配置
  1. <!-- https://mvnrepository.com/artifact/com.sun.jdmk/jmxtools -->
  2. <dependency>
  3. <groupId>com.sun.jdmk</groupId>
  4. <artifactId>jmxtools</artifactId>
  5. <version>1.2.1</version>
  6. </dependency>
0 0
原创粉丝点击