1 Reply Latest reply on Jul 11, 2011 12:37 PM by lynnowens

    javax.naming.NameNotFoundException: org not bound

    lynnowens

      Hello,

       

      I'm trying to make a JMX connection to the JBoss 5.01 MBeanServer so I can start traversing it and get familiar with it. 

       

      Unfortunately I am encountering an error that I am not familiar with. 

       

      I am running java like this:

       

      java -cp ::/home/dt59454/java/development/compiled/com/redacted/middleware/jbossjmxtest/JMXBrowser.class:/home/dt59454/apps/jboss/jboss-5.0.1.GA/client/jmx-invoker-adaptor-client.jar:/home/dt59454/apps/jboss/jboss-5.0.1.GA/client/jnp-client.jar:/home/dt59454/apps/jboss/jboss-5.0.1.GA/client/jboss-logging-spi.jar -Xms64m -Xmx256m -Djava.naming.factory.initial=org.jnp.interfaces.NamingContextFactory -Djava.naming.provider.url=jnp://localhost:1099 com.redacted.middleware.jbossjmxtest.JMXBrowser

       

      Where JMXBrowser is:

       

      [code]

      package com.redacted.middleware.jbossjmxtest;

       

      import javax.naming.*;

      import org.jboss.jmx.adaptor.rmi.*;

      import javax.management.*;

       

      public class JMXBrowser

      {

          /**

           * @param args the command line arguments

           */

          public static void main(String[] args) throws Exception

          {

              InitialContext ic = new InitialContext();

              RMIAdaptor server = (RMIAdaptor) ic.lookup("jmx/invoker/RMIAdaptor");

              // RMIAdaptor server = (RMIAdaptor) ic.lookup("org/jboss/jmx/adaptor/rmi/RMIAdaptor");

             

              // Get the MBeanInfo for the JNDIView MBean

              ObjectName name = new ObjectName("jboss:service=JNDIView");

              MBeanInfo info = server.getMBeanInfo(name);

              System.out.println("JNDIView Class: " + info.getClassName());

       

              MBeanOperationInfo[] opInfo = info.getOperations();

              System.out.println("JNDIView Operations: ");

              for(int o = 0; o < opInfo.length; o ++) {

                  MBeanOperationInfo op = opInfo[o];

       

                  String returnType = op.getReturnType();

                  String opName     = op.getName();

                  System.out.print(" + " + returnType + " " + opName + "(");

       

                  MBeanParameterInfo[] params = op.getSignature();

                  for(int p = 0; p < params.length; p++)  {

                      MBeanParameterInfo paramInfo = params[p];

       

                      String pname = paramInfo.getName();

                      String type  = paramInfo.getType();

       

                      if (pname.equals(type)) {

                          System.out.print(type);

                      } else {

                          System.out.print(type + " " + name);

                      }

       

                      if (p < params.length-1) {

                          System.out.print(',');

                      }

                  }

                  System.out.println(")");

              }

             

              // Invoke the list(boolean) op

              String[] sig    = {"boolean"};

              Object[] opArgs = {Boolean.TRUE};

              Object   result = server.invoke(name, "list", opArgs, sig);

       

              System.out.println("JNDIView.list(true) output:\n"+result);

          }

      }

      [/code]

       

      And I'm getting:

       

      Exception in thread "main" javax.naming.NameNotFoundException: org not bound

              at org.jnp.server.NamingServer.getBinding(NamingServer.java:771)

              at org.jnp.server.NamingServer.getBinding(NamingServer.java:779)

              at org.jnp.server.NamingServer.getObject(NamingServer.java:785)

              at org.jnp.server.NamingServer.lookup(NamingServer.java:396)

              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

              at java.lang.reflect.Method.invoke(Method.java:597)

              at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)

              at sun.rmi.transport.Transport$1.run(Transport.java:159)

              at java.security.AccessController.doPrivileged(Native Method)

              at sun.rmi.transport.Transport.serviceCall(Transport.java:155)

              at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)

              at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)

              at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)

              at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

              at java.lang.Thread.run(Thread.java:662)

              at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255)

              at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233)

              at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142)

              at org.jnp.server.NamingServer_Stub.lookup(Unknown Source)

              at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:722)

              at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:682)

              at javax.naming.InitialContext.lookup(InitialContext.java:392)

              at com.dstsystems.middleware.jbossjmxtest.JMXBrowser.main(JMXBrowser.java:16)

       

      Lastly, here is the JVM that I'm trying to connect to:

       

      java -Djboss.platform.mbeanserver -Dprogram.name=run.sh -server -Xms256m -Xmx512m -XX:MaxPermSize=128m -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.net.preferIPv4Stack=true -Djava.endorsed.dirs=/home/dt59454/apps/jboss/jboss-5.0.1.GA/lib/endorsed -classpath /home/dt59454/apps/jboss/jboss-5.0.1.GA/bin/run.jar org.jboss.Main basictest

       

      Any ideas?

        • 1. Re: javax.naming.NameNotFoundException: org not bound
          lynnowens

          Figured it out.  I needed to setup my InitialContext like this:

           

              Hashtable env = new Hashtable();
              env.put( Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory" );
              env.put( Context.PROVIDER_URL, ipAddr );
              env.put( Context.URL_PKG_PREFIXES, "org.jnp.interfaces" );
              ic = new InitialContext(env);