gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:14:04 27 4
gpt4 key购买 nike

我可以看到 jconsole 上的一些方法被禁用了。

下面是 com.sun.management.ThreadMXBean 的截图

jconsole screenshot

javadocs对于这些 MBean 方法,请不要指定有关可访问性部分的任何内容。

我认为这是一项安全功能,但我无法为此获得具体答案。

这个问题的第二部分显然是如何创建可以在 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)的操作启用。禁用的操作接受更复杂的类型,如数组(没有接受复杂类型的工具,也没有像 Spring 属性编辑器那样可以将字符串转换为复杂类型的工具)

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

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

关于java - 为什么 JConsole 上的某些方法被禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12025003/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com