In sun/management/jmxremote/ConnectorBootstrap.java, in exportMBeanServer(), we wrap IOException in AgentConfigurationError:
catch(IOException ioexception)
{
if(jmxconnectorserver == null)
throw new
AgentConfigurationError("agent.err.connector.server.io.error", ioexception,
new String[] {
jmxserviceurl.toString()
});
But in the Agent.java this exception is caught and the wrapped exception is
ignored:
if (jmxremote != null || jmxremotePort != null) {
259 if (jmxremotePort != null) {
260 jmxServer = ConnectorBootstrap.
261 startRemoteConnectorServer(jmxremotePort, props);
262 startDiscoveryService(props);
263 }
264 startLocalManagementAgent();
265 }
266
267 } catch (AgentConfigurationError e) {
268 error(e.getError(), e.getParams()); <--this just prints the
error message and not the stack trace and ignores the wrapped exception
269 } catch (Exception e) {
270 error(e);
271 }
We should fix this code to print information about the original exception as
well.
With the current code, what the user sees is the following message without the i/o error that caused this failure:
Error: JMX connector server communication error:
service:jmx:rmi://us2z24-emcs-nvm-ita-loader1.emcs.z24.usdc2.oraclecloud.com