我可以看到jconsole上的一些方法被禁用了。
下面是com.sun.management.ThreadMXBean
的屏幕截图
这些MBean方法的javadocs没有指定关于可访问性部分的任何内容。
我认为这是一个安全功能,但我不能得到一个具体的答案。
这个问题的第二个显而易见的部分是如何创建自定义MBean实现,该实现可以在JConsole上选择性地禁用。
以下是系统配置:
JConsole版本“1.7.0-B147”
Java(TM)SE运行时环境(build 1.7.0-B147)
Java HotSpot(TM)64位服务器VM(build 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);
原因更温和一些,它们仅用于接受简单类型的操作-int或string。被禁用的操作接受更复杂的类型,如数组(没有接受复杂类型的工具,也没有像Spring属性编辑器那样可以将字符串转换为复杂类型)
这里有一个相关的问题:WebSphere7.x。JMX,如何启用JConsole中的所有操作?
更新:这是基于查看OpenJDK站点http://hg.OpenJDK.java.net/jdk7u/jdk7u中的JConsole源代码的基础上的,操作是根据方法签名启用或禁用的,它封装在方法-sun.tools.JConsole.inspector.utils.isedable(String type)
中。允许的类型是基元、基元包装器、基元数组,
我们最近在系统中遇到了一个性能问题,Logback调用了toString(),尽管指定的日志级别(DEBUG)没有为该特定的日志记录程序启用。当然,现在还有一个额外的问题是我们的toString()方法非常占用CPU,但logback的行为非常出乎意料。给定以下简单的测试案例,日志级别为mypkg。LogTest2未指定(默认),我看到toString()调用了两次,但没有打印日志消息(注意:针对
根据我的理解,如果子例程不作用于类的实例(其作用仅限于显式输入/输出),则它是;如果子例程作用于类的实例,则它是(它可能会对实例产生副作用,使其不纯)。 关于这个话题,这里有一个很好的讨论。请注意,根据接受答案的定义,静态实际上应该是一个函数,因为实例从不隐式传递,而且它不能访问任何实例的成员。 不过,考虑到这一点,静态实际上不应该是函数吗? 我想确保我使用了正确的措辞。 有人能澄清一下吗?
问题内容: URL u =新URL(“ telnet://route-server.exodus.net”); 这行正在生成: java.net.MalformedURLException:未知协议:telnet 而且我遇到其他以“ news://”开头的URL的类似问题 这些是从ODP提取的URL,所以我不明白为什么会出现此类异常。 问题答案: 问题 Java 之所以抛出a,是因为它找不到该协议
问题内容: 我正在使用Express框架使用Node.js编写一个小型Web应用程序。我正在使用csrf中间件,但是我想对某些请求禁用它。这就是我在应用程序中添加它的方式: 我想设置没有csrf控件的POST路由。 问题答案: 有几种可能的方法。您基本上需要了解最简单和最正确的规则,以便决定是否使用csrf中间件。如果您大部分时间都希望使用csrf,除了一小部分请求模式白名单,请遵循此答案中我关于
我正在捕获一个图像并将其设置为图像视图。 但问题是,一些设备上的图像每次被旋转。例如,在三星的设备上,它运行良好,但在索尼的Xperia上,图像会旋转90度,在东芝的Thrive(平板电脑)上旋转180度。
问题内容: 默认方法是Java工具箱中一个不错的新工具。但是,我试图编写一个定义方法版本的接口。Java告诉我,这是禁止的,因为in中声明的方法可能无法编辑。为什么会这样呢? 我知道有一个“基类始终获胜”规则,因此默认情况下(pun;),方法的任何实现都会被该方法覆盖。但是,我认为没有理由为什么规范中的方法不应有例外。特别是因为它具有默认实现可能非常有用。 那么,Java设计者决定不允许方法覆盖方