10

jconsoleのいくつかのメソッドが無効になっていることがわかります。

以下のスクリーンショットはcom.sun.management.ThreadMXBean

jconsoleスクリーンショット

これらのMBeanメソッドのjavadocsは、アクセシビリティ部分について何も指定していません。

これはセキュリティ機能だと思いますが、具体的な答えは得られません。

この質問の明らかな2番目の部分は、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);
4

1 に答える 1

14

その理由はもう少し良性であり、単純な型(intまたはstring)を使用する操作に対してのみ有効になります。無効にされた操作は、配列などのより複雑な型を取り込みます(複合型を取り込む機能はなく、文字列を複合型に変換できるSpringプロパティエディターのようなものはありません)

関連する質問は次のとおりです:Websphere7.X。JMX、JConsoleですべての操作を有効にする方法は?

更新:これは、OpenJDKサイトhttp://hg.openjdk.java.net/jdk7u/jdk7uからJConsoleのソースコードを確認することに基づいています。操作は、メソッドシグネチャに基づいて有効または無効になり、これはにカプセル化されます。メソッド- sun.tools.jconsole.inspector.Utils.isEditable(String type)。許可されるタイプは、プリミティブ、プリミティブラッパー、プリミティブの配列、

于 2012-08-19T08:51:17.263 に答える