users@glassfish.java.net

Re: NodeAgent + multi-homed WinXP + JMX Connector URL confusion

From: <glassfish_at_javadesktop.org>
Date: Thu, 13 Nov 2008 09:42:53 PST

Ok, done a bit more digging.
Yes, you are correct, by changing things around and making %computername% resolve to the IP address I've used to configure the nodeagent.properties, things work as advertised.

Also, I believe I have found the offending bit of code as well.
Here is the method in NodeAgent (cvs version 1.28 onward) that is perhaps broken:

protected void registerJmxConnector(
        String protocol, String [b]host[/b], String port) throws Exception {
        if (bDebug)
            System.out.println(this.getClass().getName() +
                ": Trying to start jmx connector:" + "service:jmx:" + protocol
              + "://" + [b]host[/b] + ":" + port);

        /* TODO - changes required here ... */
        ConfigContext configContext = getConfigContext();
        JmxConnector connector = NodeAgentHelper.getNodeAgentSystemConnector(
            configContext, getNodeAgentName());
        final int iPort = Integer.parseInt(port);
        final JmxConnectorServerDriver dr = new JmxConnectorServerDriver();
        dr.setAuthentication(true);
        dr.setAuthenticator(createJMXAuthenticator(connector));
        dr.setMBeanServer(_server);
        [b]dr.setBindAddress(connector.getAddress());[/b]
        dr.setPort(iPort);
        dr.setProtocol(RemoteJmxProtocol.instance(protocol));
        handleSsl(dr, connector);
        dr.setLogger(_logger);
        dr.setRmiRegistrySecureFlag(false); //TODO
        final JMXConnectorServer serverEnd = dr.startConnectorServer();
        getLogger().log(Level.INFO, "NodeAgent url = " +
                                      "service:jmx:" + connector.getProtocol() +
                                      "://" + connector.getAddress() +
                                      ":" + connector.getPort());

        registerMBean(serverEnd, JMX_SERVER_MBEAN_PREFIX + port);
        if (bDebug) query();
    }

I configured the processLauncher.xml file to set -DDebug=true and get the following output at startup:

Redirecting output to C:/glassfish/nodeagents/SL-XAV-node-agent/agent/logs/server.log
class of platform MBeanServer is com.sun.jmx.mbeanserver.JmxMBeanServer
Redirecting application output to C:/glassfish/nodeagents/SL-XAV-node-agent/agent/logs/server.log
JMXConnectorRegistry:Establishing new connection to default
Attempting to connect to mbean server at service:jmx:rmi:///jndi/rmi://seqlims:8686/management/rmi-jmx-connector
Connection to default succeeded
JMXConnectorRegistry:Establishing new connection to default
JMXConnectorRegistry:Establishing new connection to default
Attempting to connect to mbean server at service:jmx:rmi:///jndi/rmi://seqlims:8686/management/rmi-jmx-connector
JMXConnectorRegistry:Establishing new connection to default
Attempting to connect to mbean server at service:jmx:rmi:///jndi/rmi://seqlims:8686/management/rmi-jmx-connector
JMXConnectorRegistry:Establishing new connection to default
Attempting to connect to mbean server at service:jmx:rmi:///jndi/rmi://seqlims:8686/management/rmi-jmx-connector
JMXConnectorRegistry:Establishing new connection to default
Attempting to connect to mbean server at service:jmx:rmi:///jndi/rmi://seqlims:8686/management/rmi-jmx-connector
JMXConnectorRegistry:Establishing new connection to default
JMXConnectorRegistry:Establishing new connection to default
JMXConnectorRegistry:Establishing new connection to default
JMXConnectorRegistry:Establishing new connection to default
Attempting to connect to mbean server at service:jmx:rmi:///jndi/rmi://seqlims:8686/management/rmi-jmx-connector
Attempting to connect to mbean server at service:jmx:rmi:///jndi/rmi://seqlims:8686/management/rmi-jmx-connector
Attempting to connect to mbean server at service:jmx:rmi:///jndi/rmi://seqlims:8686/management/rmi-jmx-connector
Attempting to connect to mbean server at service:jmx:rmi:///jndi/rmi://seqlims:8686/management/rmi-jmx-connector
Attempting to connect to mbean server at service:jmx:rmi:///jndi/rmi://seqlims:8686/management/rmi-jmx-connector
Connection to default succeeded
Connection to default succeeded
Connection to default succeeded
Connection to default succeeded
Connection to default succeeded
Connection to default succeeded
Connection to default succeeded
Connection to default succeeded
Connection to default succeeded
Looking for :com.sun.appserver.nodeagent:name=JmxConnectorServer,port=4933
[b]com.sun.enterprise.ee.nodeagent.NodeAgent: Trying to start jmx connector:service:jmx:rmi_jrmp://192.168.3.191:4933[/b]
DEBUG MESSAGE: SSL Status for System Jmx Connector: true
RMI/TLS Server Debug Message: ServerSocket local port = 4961
RMI/TLS Server Debug Message: ServerSocket host address = 192.168.3.191
RMI/TLS Server Debug Message: ServerSocket bound status = true
Node Agent SL-XAV-node-agent failed to startup. Please check the server log for more details.
CLI137 Command start-node-agent failed.

--
Notice that the 'Trying to start jmx...' highlighted above occurs in the code pasted above.  But, I never get to the ending log statement because it blows up before there.
Looks to me like 'host' should replace the connector.getAddress() call in the setBindAddress() mutator?
Thanks, John
[Message sent by forum member 'jstalker' (jstalker)]
http://forums.java.net/jive/thread.jspa?messageID=316602