这两段有什么区别,为什么用第一种老是出错呢?
Context ctx = new InitialContext();
DataSource myDataSource= (DataSource)ctx.lookup("myDataSource");
Hashtable ht = new Hashtable();
InitialContext ctx = new InitialContext();
ht.put(ctx.PROVIDER_URL, "t3://localhost:7001") ;
ht.put(ctx.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
ctx = new InitialContext(ht);
DataSource myDataSource= (DataSource)ctx.lookup("myDataSource");
InitialContext的构造方法主要是准备JNDI的访问环境,如果不加参数,那就意味着是用本地匿名访问,也就是说,用户角色是匿名,ctx.PROVIDER_URL是LOCALHOST
所以,对于本地测试(并且JNDI资源没有设置安全属性)这两段代码没有区别,如果要访问远程的JNDI资源,就必须用饱含JNDI环境参数Hashtable初始化InitialContext。
必要的环境参数如:
Context.INITIAL_CONTEXT_FACTORY//连接工厂
Context.PROVIDER_URL//访问连接
Context.SECURITY_PRINCIPAL//安全用户
Context.SECURITY_CREDENTIALS//用户密码
关于InitialContext()的问题
最新推荐文章于 2021-02-15 17:21:34 发布