一、JNDI是什么?
定义是:Java Naming and Directory Interface : Java 命名与目录接口; 可以狭义的理解为一种服务的提供者和调用者的约定; 举个栗子: 警察和大家约定110是报警电话, 拨打110就可以获得警察的帮助(服务) 而jndi的作用就是通过给定的110(name)找到对应的警察(object),就可以获得相应的帮助(调用object的方法);二、JNDI干什么?
解耦和, 分布式调用。程序猿要什么数据库密码。
三、JNDI怎么干?
上教程:JNDI教程
一言不合就debug:
比如通过jndi找tomcat数据源
1、具体参数的官方解释:(咱也看不懂,咱也不敢说)
四、总结
上述的大致流程是:
服务提供者:
1、工厂类:提供InitialContext
TestInitialContextFactory implements InitialContextFactory{
@Override
public Context getInitialContext(Hashtable<?, ?> environment) throws NamingException {
return new TestContext();
}
}
2、Context类:实现name与对象的绑定, 以及根据name查找对象
TestConfigContext implements Context{
@Override
public Object lookup(String name) throws NamingException {
}
@Override
public void bind(String name, Object obj) throws NamingException {
}
.....
}
服务调用者:找到服务者的工厂类并调用getInitialContext找到InitialContext
defaultInitCtx = NamingManager.getInitialContext(myProps);
factory.getInitialContext(env);