Uploaded image for project: 'Red Hat Fuse'
  1. Red Hat Fuse
  2. ENTESB-1611

Can not establish JMX connection to child containers.

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Won't Do
    • Icon: Major Major
    • jboss-fuse-6.2
    • jboss-fuse-6.1
    • None
    • None
    • % %
    • Hide

      Run:

      package org.jboss.sample.jmx;
      
      import java.io.IOException;
      import java.net.MalformedURLException;
      import java.util.HashMap;
      import java.util.Map;
      
      import javax.management.MBeanServerConnection;
      import javax.management.remote.JMXConnector;
      import javax.management.remote.JMXConnectorFactory;
      import javax.management.remote.JMXServiceURL;
      
      public class SimpleJMX {
      //	private static String userid = "juser";
      //	private static String password = "password"; 
      	private static String userid = "admin";
      	private static String password = "admin"; 
      	private static String hostname = "10.0.0.153";
      	private static String port = "44444";
      	private static String container ="karaf-root";
      	
      	@SuppressWarnings("unused")
      	public static void main(String[] args) throws Exception {
      		Map<String, String[]> env = new HashMap<String, String[]>();
      		String[] credentials = new String[] { userid, password };
              env.put(JMXConnector.CREDENTIALS, credentials);
              
      		try {
      			JMXServiceURL address = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://"+hostname+":"+port+"/"+container);
      	        JMXConnector connector = JMXConnectorFactory.connect(address,env);
      	        MBeanServerConnection connection = connector.getMBeanServerConnection();
      	        System.out.println("CustomProcessHandler:|:makeConnection():|:GOT THE MBeanServerConnection---SUCCESSFULLY");
      		} catch (MalformedURLException e) {
      			e.printStackTrace();
      		} catch (IOException e1) {
      			e1.printStackTrace();
      		}
      	}
      }
      

      Modifying the static constants for the desired host and child container.

      Show
      Run: package org.jboss.sample.jmx; import java.io.IOException; import java.net.MalformedURLException; import java.util.HashMap; import java.util.Map; import javax.management.MBeanServerConnection; import javax.management.remote.JMXConnector; import javax.management.remote.JMXConnectorFactory; import javax.management.remote.JMXServiceURL; public class SimpleJMX { // private static String userid = "juser" ; // private static String password = "password" ; private static String userid = "admin" ; private static String password = "admin" ; private static String hostname = "10.0.0.153" ; private static String port = "44444" ; private static String container = "karaf-root" ; @SuppressWarnings( "unused" ) public static void main( String [] args) throws Exception { Map< String , String []> env = new HashMap< String , String []>(); String [] credentials = new String [] { userid, password }; env.put(JMXConnector.CREDENTIALS, credentials); try { JMXServiceURL address = new JMXServiceURL( "service:jmx:rmi: ///jndi/rmi://" +hostname+ ":" +port+ "/" +container); JMXConnector connector = JMXConnectorFactory.connect(address,env); MBeanServerConnection connection = connector.getMBeanServerConnection(); System .out.println( "CustomProcessHandler:|:makeConnection():|:GOT THE MBeanServerConnection---SUCCESSFULLY" ); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } } } Modifying the static constants for the desired host and child container.

      Attaching to the child container JMX port (44444 by default) produces:

      java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.CommunicationException [Root exception is java.rmi.NoSuchObjectException: no such object in table]
      	at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:355)
      	at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:268)
      	at org.jboss.sample.jmx.SimpleJMX.main(SimpleJMX.java:30)
      Caused by: javax.naming.CommunicationException [Root exception is java.rmi.NoSuchObjectException: no such object in table]
      	at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:118)
      	at com.sun.jndi.toolkit.url.GenericURLContext.lookup(GenericURLContext.java:203)
      	at javax.naming.InitialContext.lookup(InitialContext.java:409)
      	at javax.management.remote.rmi.RMIConnector.findRMIServerJNDI(RMIConnector.java:1915)
      	at javax.management.remote.rmi.RMIConnector.findRMIServer(RMIConnector.java:1884)
      	at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:289)
      	... 2 more
      Caused by: java.rmi.NoSuchObjectException: no such object in table
      	at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:273)
      	at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:251)
      	at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:377)
      	at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
      	at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:114)
      	... 7 more
      

      This code works against a A-MQ 6.0 instance, and the JMX connector on port 1099 for a A-MQ 6.1 instance.

            ggrzybek Grzegorz Grzybek
            rhn-support-dgrove Doug Grove (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: