在JConsole的一些方法为什么禁用(Why are some methods on the JC

2019-07-31 01:40发布

我可以看到,在JConsole的一些方法被禁用。

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

的的javadoc这些MBean方法不指定有关的辅助部分东西。

我认为这是一个安全功能,但我不能够得到具体的答案这一点。

最明显的第二部分,对这个问题是如何创建可以在JConsole中有选择地禁止定制的MBean实现。

下面给出的是系统配置:

JConsole的版本 “1.7.0-B147”

的Java(TM)SE运行时环境(建立1.7.0-B147)

的Java的HotSpot(TM)64位服务器VM(构建21.0-B17,混合模式)

编辑

禁用的方法是从一个独立的过程中可调用。

    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);

Answer 1:

int或字符串 - 原因是多一点良性的,他们只为内搭简单类型的操作启用。 禁用的操作采取更加复杂的类型,如阵列(没有工厂采取复杂的类型,并没有像说一个春天的属性编辑器,可以将字符串转换为复杂类型)

这是一个相关的问题: 的Websphere 7.X上 JMX,如何启用JConsole中的所有操作?

更新:这是基于看着从OpenJDK的网站JConsole的源代码http://hg.openjdk.java.net/jdk7u/jdk7u的操作时,基于该方法的签名启用或禁用,这是封装在方法- sun.tools.jconsole.inspector.Utils.isEditable(String type) 。 允许的类型是原始类型,原语包装,基元的阵列,



文章来源: Why are some methods on the JConsole disabled