Context类是JNDI API的核心,使用JNDI时,通常要生成InitialContext对象:
Context ctx = new InitialContext();
InitialContext构造函数根据系统属性java.naming.factory.initial找到生成InitialContext的类名。有些EJB容器已经设置了这个属性,有时则需要自己提供这个值。
JDK1.3带有三个内置的服务提供者:RMI,CORBA和LDAP。它们的初始环境工厂类分别为:
com.sun.jndi.rmi.registry.RegistryContextFactory
com.sun.jndi.cosnaming.CNCtxFactory
com.sun.jndi.ldap.LdapCtxFactory
也可以在命令行用-D选项指定:
java -Djava.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory usingj2ee.naming.JNDIDemo
也可以在传入InitialContext构造函数的Hashtable中指定:
Hashtable props = new Hashtable();
props.put(Context.INITIAL_CONTEXT_FACOTRY, "com.sun.jndi.ldap.LdapCtxFactory");
Context ctx = new InitialContext(props);

解决方案 »

  1.   

    我这样改了一下,出现下面的错误connect refused?不太明白啊,求解
    NamingException:javax.naming.CommunicationException: localhost:389 [Root exception is java.net.ConnectException: Connection refused: connect]java.util.Hashtable props = new java.util.Hashtable();
    props.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
    Context ctx = new InitialContext(props);
    ds = (DataSource) ctx.lookup("LPSDB");
      

  2.   

    ·安装允许RMI操作的安全策略
    举例:
    //xxx.policy
    grant{
        permission java.security.AllPermission;
    };·运行服务器
    举例:
    java -Djava.security.policy=xxx.policy yourserver