Hi, In Carol project (used by JOnAS project), the RMI context factory is resolved by a call to the javax.naming.spi.NamingManager class [1]. With JVMs using GNU Classpath, the context returned by calling NamingManager.getURLContext(,) method is null, while with Sun/Bea/IBM JDK, it is non-null. When looking at the GNU classpath class source code: http://cvs.savannah.gnu.org/viewcvs/classpath/javax/naming/spi/NamingManager.java?rev=1.9&root=classpath&view=log There are some issues. For example, there is the following code : if (prefixes == null) { // Specified as the default in the docs. Unclear if this is // right for us. prefixes = "com.sun.jndi.url"; } By default, (see http://java.sun.com/j2se/1.3/docs/api/javax/naming/spi/NamingManager.html) it doesn't mean that it should not be added to the existing prefixes, and it is strange to add some sun prefixes in GNU classpath. When using rmi as scheme, with Sun JVM, the expected class is "com.sun.jndi.url.rmi.rmiURLContextFactory" (as written in the guide http://java.sun.com/j2se/1.4.2/docs/guide/jndi/jndi-rmi.html ). With GNU classpath, if we have a prefix (JOnAS case), it will then try to instantiate a class rmiURLContextFactory with different packages. But none of them will be found (and it doesn't search in com.sun.jndi.url package as there is already a package : prefixes != null). I tried to search a rmiURLContextFactory class in GNU classpath but I didn't find one (with this name). So, I think that a rmiURLContextFactory class and iiopURLContextFactory should be added in a GNU classpath package. And that the default prefix to use should be the package containing the 2 previous classes. Moreover, this prefix should be added for all cases (and not only when prefixes is null). Without these classes, JOnAS couldn't run with RMI/JRMP, RMI/IRMI and RMI/IIOP (only jeremie should be working as the context factory is in jeremie package. But jeremie is deprecated and I want to run JOnAS with IRMI). [1] example of code reproducing a NULL context by using GNU classpath (and a non-null context with proprietary jvm like Sun/Bea/IBM) import java.util.Hashtable; import javax.naming.Context; import javax.naming.NamingException; import javax.naming.spi.InitialContextFactory; import javax.naming.spi.NamingManager; public class TestJNDI { public static void main(String[] args) throws Exception { Hashtable env = new Hashtable(); env.put(Context.PROVIDER_URL, "rmi://localhost:1099"); env.put(Context.INITIAL_CONTEXT_FACTORY, URLInitialContextFactory.class.getName()); env.put(Context.URL_PKG_PREFIXES, "test.jndi"); Context ctx = NamingManager.getURLContext("rmi", env); System.out.println("Ctx = " + ctx); } public class URLInitialContextFactory implements InitialContextFactory { public Context getInitialContext(Hashtable environment) throws NamingException { return null; } } } Regards, Florent