A lookup such as the one you've posted works for me as well, but only when the client to the EJB is running in the same container as the EJB. Otherwise I get a "comp not bound" message in an exception. I'm not a JNDI guru, but I'm guessing it has to do with the JNDI namespaces - the EJB running on one instance of the JVM is in one JNDI namespace, while the client running in another instance of the JVM is in a different namespace. Doing a global lookup ( ctx.lookup("/ejb/myEJB"); ) works while doing a specific ( ctx.lookup("java:comp/env/ejb/myEJB") ) will not due to the difference in namespaces. Is this correct? If not, what am I misunderstanding?