JNDI小记

概述

  JNDI,Java Naming Directory Interface,J2EE的标准之一,是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI服务供应接口(SPI)的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互,所有的J2EE容器都必须提供一个JNDI的服务。
  集群JNDI实现了高可靠性JNDI,通过服务器的集群,保证了JNDI的负载平衡和错误恢复。在集群环境下配置JNDI与非集群配置无区别。
  JNDI 的主要功能是 使用哈希树表来存储键值对,即特定命名对应相应的对象。每个应用服务器在把部署的服务对象绑定到自己本地的JNDI树的同时,还绑定到一个共享的全局JNDI树,实现全局JNDI和自身JNDI的联系。
  以前很少接触过JNDI,只有把数据源配置在weblogic或者tomcat时候会使用。对JNDI和RMI一直有混淆。 RMI只是一种远程对象访问的接口规范,遵循此规范的对象可被远程访问,但是要使用rmi的服务注册程序注册之后才能够被远程调用。JNDI是Java命名和目录服务访问接口,通过JNDI,可以访问已经在命名和目录服务器中注册的服务对象,因此,可以把rmi对象注册在LDAP(Lightweight Directory Access Protocol)命名目录服务器中,然后使用JNDI对远程对象进行访问和调用。
    spring框架配置JNDI数据源方式:

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean" >
   <property name="jndiName">
      <value>服务器上JNDI配置命名</value>
   </property>
</bean>

 

 

JNDI的一个类javax.naming.InitialContext,它读取JNDI的一些配置信息,并内含对象和其在JNDI中的注册名称的映射信息。

在JndiTemplate类中:

 初始化:Context ctx=new InitialContext();

public Object lookup(final String name) throws NamingException {
if (logger.isDebugEnabled()) {
logger.debug("Looking up JNDI object with name [" + name + "]");
}
return execute(new JndiCallback<Object>() {
@Override
public Object doInContext(Context ctx) throws NamingException {
Object located = ctx.lookup(name);
if (located == null) {
throw new NameNotFoundException(
"JNDI object with [" + name + "] not found: JNDI implementation returned null");
}
return located;
}
});
}

返回一个DataSource对象。
如有不对,请指正,谢谢~
 
  
 

转载于:https://www.cnblogs.com/liuxiaobai/p/7010102.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值