From e389786d6785852bf8fedb9ff24294a1518d9bed Mon Sep 17 00:00:00 2001 Date: Fri, 22 Jan 2021 15:27:51 +0800 Subject: Add ability to configure third port for remote JMX Summary: : LLT: NA Bug url: NA --- .../management/AgentConfigurationError.java | 2 ++ .../jmxremote/ConnectorBootstrap.java | 19 ++++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/jdk/src/share/classes/sun/management/AgentConfigurationError.java b/jdk/src/share/classes/sun/management/AgentConfigurationError.java index 56c430161..d3d67ff31 100644 --- a/jdk/src/share/classes/sun/management/AgentConfigurationError.java +++ b/jdk/src/share/classes/sun/management/AgentConfigurationError.java @@ -55,6 +55,8 @@ public class AgentConfigurationError extends Error { "agent.err.invalid.jmxremote.port"; public static final String INVALID_JMXREMOTE_RMI_PORT = "agent.err.invalid.jmxremote.rmi.port"; + public static final String INVALID_JMXLOCAL_PORT = + "agent.err.invalid.jmxlocal.port"; public static final String PASSWORD_FILE_NOT_SET = "agent.err.password.file.notset"; public static final String PASSWORD_FILE_NOT_READABLE = diff --git a/jdk/src/share/classes/sun/management/jmxremote/ConnectorBootstrap.java b/jdk/src/share/classes/sun/management/jmxremote/ConnectorBootstrap.java index 56287edbd..0a82c65d1 100644 --- a/jdk/src/share/classes/sun/management/jmxremote/ConnectorBootstrap.java +++ b/jdk/src/share/classes/sun/management/jmxremote/ConnectorBootstrap.java @@ -117,6 +117,8 @@ public final class ConnectorBootstrap { "com.sun.management.jmxremote.host"; public static final String RMI_PORT = "com.sun.management.jmxremote.rmi.port"; + public static final String LOCAL_PORT = + "com.sun.management.jmxlocal.port"; public static final String CONFIG_FILE_NAME = "com.sun.management.config.file"; public static final String USE_LOCAL_ONLY = @@ -530,9 +532,24 @@ public final class ConnectorBootstrap { localhost = "127.0.0.1"; } + // User can specify a port to be used to start Local Connector Server, + // if port is not specified random one will be allocated. + int localPort = 0; + String localPortStr = System.getProperty(PropertyNames.LOCAL_PORT); + try { + if (localPortStr != null) { + localPort = Integer.parseInt(localPortStr); + } + } catch (NumberFormatException x) { + throw new AgentConfigurationError(INVALID_JMXLOCAL_PORT, x, localPortStr); + } + if (localPort < 0) { + throw new AgentConfigurationError(INVALID_JMXLOCAL_PORT, localPortStr); + } + MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); try { - JMXServiceURL url = new JMXServiceURL("rmi", localhost, 0); + JMXServiceURL url = new JMXServiceURL("rmi", localhost, localPort); // Do we accept connections from local interfaces only? Properties props = Agent.getManagementProperties(); if (props == null) { -- 2.19.0