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);
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);
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");
举例:
//xxx.policy
grant{
permission java.security.AllPermission;
};·运行服务器
举例:
java -Djava.security.policy=xxx.policy yourserver