Управление полетом Java - не удалось запустить рекордер

java.lang.RuntimeException: Access denied! Invalid access level for requested MBeanServer operation.
    at com.jrockit.mc.flightrecorder.controlpanel.ui.FlightRecorderProvider.refresh(FlightRecorderProvider.java:110)
    at com.jrockit.mc.browser.views.JVMBrowserView$1.run(JVMBrowserView.java:100)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.SecurityException: Access denied! Invalid access level for requested MBeanServer operation.
    at com.sun.jmx.remote.security.MBeanServerFileAccessController.checkAccess(MBeanServerFileAccessController.java:344)
    at com.sun.jmx.remote.security.MBeanServerFileAccessController.checkCreate(MBeanServerFileAccessController.java:249)
    at com.sun.jmx.remote.security.MBeanServerAccessController.createMBean(MBeanServerAccessController.java:177)
    at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1421)
    at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
    at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1307)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1406)
    at javax.management.remote.rmi.RMIConnectionImpl.createMBean(RMIConnectionImpl.java:255)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:323)
    at sun.rmi.transport.Transport$1.run(Transport.java:200)
    at sun.rmi.transport.Transport$1.run(Transport.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$251(TCPTransport.java:683)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$$Lambda$2/6736119.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
    at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:276)
    at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:253)
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:162)
    at com.sun.jmx.remote.internal.PRef.invoke(Unknown Source)
    at javax.management.remote.rmi.RMIConnectionImpl_Stub.createMBean(Unknown Source)
    at javax.management.remote.rmi.RMIConnector$RemoteMBeanServerConnection.createMBean(RMIConnector.java:651)
    at com.jrockit.mc.rjmx.internal.MCMBeanServerConnection.createMBean(MCMBeanServerConnection.java:66)
    at com.jrockit.mc.rjmx.services.internal.HotspotManagementToolkit.registerMBeans(HotspotManagementToolkit.java:50)
    at com.jrockit.mc.rjmx.services.flr.internal.FlightRecorderCommunicationHelper.getAttribute(FlightRecorderCommunicationHelper.java:39)
    at com.jrockit.mc.rjmx.services.flr.internal.FlightRecorderService.getAvailableRecordings(FlightRecorderService.java:196)
    at com.jrockit.mc.flightrecorder.controlpanel.ui.FlightRecorderProvider.refreshRecordings(FlightRecorderProvider.java:128)
    at com.jrockit.mc.flightrecorder.controlpanel.ui.FlightRecorderProvider.refresh(FlightRecorderProvider.java:99)
    ... 8 more
Caused by: java.lang.SecurityException: Access property for this identity should be similar to: readwrite create com.sun.management.MissionControl
    at com.sun.jmx.remote.security.MBeanServerFileAccessController.checkAccess(MBeanServerFileAccessController.java:352)
    at com.sun.jmx.remote.security.MBeanServerFileAccessController.checkCreate(MBeanServerFileAccessController.java:249)
    at com.sun.jmx.remote.security.MBeanServerAccessController.createMBean(MBeanServerAccessController.java:177)
    at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1421)
    at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
    at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1307)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1406)
    at javax.management.remote.rmi.RMIConnectionImpl.createMBean(RMIConnectionImpl.java:255)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:497)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:323)
    at sun.rmi.transport.Transport$1.run(Transport.java:200)
    at sun.rmi.transport.Transport$1.run(Transport.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$251(TCPTransport.java:683)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$$Lambda$2/6736119.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
    ... 3 more

Я пытаюсь подключиться, чтобы удалить сервер с помощью JMC. Получил следующую трассировку стека при запуске бортового регистратора. Тем временем я могу запустить консоль JMX в JMC и видеть все данные (память, процессор и т. д.).

Я подключаюсь с помощью controlRole

controlRole   readwrite \
              create javax.management.monitor.*,javax.management.timer.* \
              unregister

Любая подсказка?

Это потому, что мне не хватает следующих ключей в запущенном приложении? Пытался подключиться к локальному приложению, которое запускается без ключей ниже, работает нормально

-XX:+UnlockCommercialFeatures -XX:+FlightRecorder

Обновить - добавленные выше параметры JVM не помогли


person user12384512    schedule 26.04.2016    source источник
comment
Это проблема доступа. вы пытаетесь записать или выполнить операцию Mbean. Но что бы это ни было, оно связано с доступом   -  person Vineet Kasat    schedule 26.04.2016


Ответы (1)


<your-role-name-goes-here> readwrite \
  create com.sun.management.*,com.oracle.jrockit.* \
  unregister

jmxremote.access необходимо изменить. JMC требует специального разрешения — https://community.oracle.com/thread/2588377

person user12384512    schedule 26.04.2016