I asked this over on the Oracle forums, and like here, got no reply. So I brute-forced it by instanting a org.jnp.interfaces.NamingContext object myself, instead of trying to use the factory. That part works. However, I then encountered an error java.io.StreamCorruptedException: Type code out of range, is 125. A trip to the Sun Java site reveals this to be a Java version incompatibility; JBoss requires 1.3, while the Oracle JVM is 1.2.1. So the short answer is that it is just not possible to connect directly from the Oracle JVM to JBoss EJBs. I'm next going to attempt an RMI proxy between the two.