< prev index next >
test/jdk/jdk/jfr/jmx/JmxHelper.java
Print this page
@@ -34,10 +34,11 @@
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import com.sun.tools.attach.VirtualMachine;
import jdk.jfr.EventType;
import jdk.jfr.FlightRecorder;
import jdk.jfr.Recording;
import jdk.jfr.RecordingState;
import jdk.jfr.SettingDescriptor;
@@ -50,11 +51,19 @@
import jdk.test.lib.Asserts;
import jdk.test.lib.Utils;
import jdk.test.lib.jfr.CommonHelper;
import jdk.test.lib.jfr.Events;
+import javax.management.JMX;
+import javax.management.MBeanServerConnection;
+import javax.management.ObjectName;
+import javax.management.remote.JMXConnector;
+import javax.management.remote.JMXConnectorFactory;
+import javax.management.remote.JMXServiceURL;
+
public class JmxHelper {
+ private static final String LOCAL_CONNECTION_ADDRESS = "com.sun.management.jmxremote.localConnectorAddress";
public static RecordingInfo getJmxRecording(long recId) {
for (RecordingInfo r : getFlighteRecorderMXBean().getRecordings()) {
if (r.getId() == recId) {
return r;
@@ -277,6 +286,20 @@
public static FlightRecorderMXBean getFlighteRecorderMXBean() {
return ManagementFactory.getPlatformMXBean(FlightRecorderMXBean.class);
}
+ public static long getPID(){
+ return ManagementFactory.getRuntimeMXBean().getPid();
+ }
+
+ public static FlightRecorderMXBean getFlighteRecorderMXBean(long pid) throws Exception {
+ VirtualMachine targetVM = VirtualMachine.attach("" + pid);
+ String jmxServiceUrl = targetVM.getAgentProperties().getProperty(LOCAL_CONNECTION_ADDRESS);
+ JMXServiceURL jmxURL = new JMXServiceURL(jmxServiceUrl);
+ JMXConnector connector = JMXConnectorFactory.connect(jmxURL);
+ MBeanServerConnection connection = connector.getMBeanServerConnection();
+
+ ObjectName objectName = new ObjectName("jdk.management.jfr:type=FlightRecorder");
+ return JMX.newMXBeanProxy(connection, objectName, FlightRecorderMXBean.class);
+ }
}
< prev index next >