加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 为什么JConsole上的某些方法被禁用

发布时间:2020-12-15 00:37:18 所属栏目:Java 来源:网络整理
导读:我可以看到jconsole上的一些方法被禁用了. 下面给出了com.sun.management.ThreadMXBean的屏幕截图 这些MBean方法的javadocs没有指定有关可访问性部分的任何内容. 我认为这是一个安全功能,但我无法得到具体的答案. 这个问题的第二部分显而易见的是如何创建可
我可以看到jconsole上的一些方法被禁用了.

下面给出了com.sun.management.ThreadMXBean的屏幕截图

这些MBean方法的javadocs没有指定有关可访问性部分的任何内容.

我认为这是一个安全功能,但我无法得到具体的答案.

这个问题的第二部分显而易见的是如何创建可以在jconsole上有选择地禁用的自定义MBean实现.

以下是系统配置:

JConsole version “1.7.0-b147”

Java(TM) SE Runtime Environment (build 1.7.0-b147)

Java HotSpot(TM) 64-Bit Server VM (build 21.0-b17,mixed mode)

编辑:

禁用的方法可以从独立进程中调用.

MBeanServer server = ManagementFactory.getPlatformMBeanServer();
    ObjectName name = new ObjectName("java.lang","type","Threading");
    String operationName = "getThreadAllocatedBytes";
    //1 is main thread
    Object[] params = {1};
    String[] signature = new String[]{"long"};
    Object result = server.invoke(name,operationName,params,signature);
    //Result is 682760 on my machine
    System.out.println(result);

解决方法

原因是更为温和,它们仅对采用简单类型的操作启用 – int或string.禁用的操作采用更复杂的类型,如数组(没有设施可以采用复杂的类型,没有像弹簧属性编辑器那样可以将字符串转换为复杂类型)

这是一个相关的问题:Websphere 7.X. JMX,how to enable all operations in JConsole?

更新:这是基于从OpenJDK站点http://hg.openjdk.java.net/jdk7u/jdk7u查看JConsole的源代码,根据方法签名启用或禁用操作,并将其封装在方法中 – sun.tools.jconsole.inspector.Utils.isEditable(字符串类型).允许的类型是基元,基元包装器,基元数组,

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读