我先抄一段自己的一个简单的EJB客户端测试程序代码片段:
......Properties pt=new Properties();
pt.put(Context.PROVIDER_URL,"iiop://192.168.0.9:3700");
pt.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.cosnaming.CNCtxFactory");Context initial=new InitialContext(pt);
System.out.println("JNDI Found");......     这段代码就使用了参数来构造Context实例,原因是我的EJB服务器和客户端程序分别部署在不同的机器上(实际应用情况也是如此),所以,必须在客户端程序使用参数构造Context实例,以告诉客户端从哪里(IP地址:端口),用何种方式(比如RMI/IIOP)去寻找JNDI资源(所在的服务器)以及JNDI的提供类。
     如果不使用参数来构造Context实例,那么程序会从本机以默认的参数寻找JNDI资源,这在客户端程序和EJB服务器(JNDI资源提供者)在同台机器上运行的情况下一般是可以正常运行的,大多教材上给出的代码示例也没有参数,可以在同台机器上测试服务器和客户端代码。不过在实际应用中,客户端程序和EJB服务器会在不同的机器,甚至不同的网络段,所以应该掌握如何设定参数初始化Context实例,以连接远程EJB服务器。