Tomcat5.5下的JNDI的配置

 JNDI : Java Naming and Directory Interface,用于定位查找服务对象。JNDI是Java平台的一个标准扩展,提供了一组接口、类和关于命名空间的概念。如同其它很多Java技术一样,JDNI是provider-based的技术,暴露了一个API和一个服务供应接口(SPI)。这意味着任何基于名字的技术都能通过JNDI而提供服务,只要JNDI支持这项技术。JNDI目前所支持的技术包括LDAP、CORBA Common Object Service(COS)名字服务、RMI、NDS、DNS、Windows注册表等等。很多J2EE技术,包括EJB都依靠JNDI来组织和定位实体。  JDNI通过绑定的概念将对象和名称联系起来。在一个文件系统中,文件名被绑定给文件。在DNS中,一个IP地址绑定一个URL。在目录服务中,一个对象名被绑定给一个对象实体。  JNDI中的一组绑定作为上下文来引用。每个上下文暴露的一组操作是一致的。例如,每个上下文提供了一个查找操作,返回指定名字的相应对象。每个上下文都提供了绑定和撤除绑定名字到某个对象的操作。JNDI使用通用的方式来暴露命名空间,即使用分层.

JNDI是J2EE中一个很重要的标准,通常我们是在J2EE编程中用到,Tomcat中提供了在JSP和Servelt中直接使用JNDI的方法,主要是通过dbcp连接池,下面谈一下我在Tomcat5.5中配置和使用JNDI的方法。本文的对象是对j2ee编程有所了解的读者,或者已经看过了我的Blog:tomcat的基本配置说明

一、先在自己应用程序WEB-INF目录下的web.xml添加以下语句:

      
        <resource-ref>
  <descrtiption>引用资源说明</descrtiption>
  <res-ref-name>引用资源的JNDI名</res-ref-name>
  <res-type>引用资源的类名</res-type>
  <res-auth>管理者(Container)</res-auth><!--Container-容器管理
    Application-Web应用管理-->
  </resource-ref>
  

然后在tomcat目录/conf/server.xml文件里相应的 元素,看我的Blog:tomcat的基本配置说明

添加如下子元素:

  

      
        <Resource name="引用资源的JNDI名" auth="Container" type="javax.sql.DataSource"
  driverClassName="com.pointbase.jdbc.jdbcUniversalDriver(自己的jdbc驱动)"
  url="jdbc:pointbase:server://localhost/acme(数据库连接url)"
  username="root(用户名)" password="root(密码)"
    maxActive="20(连接池dbcp的相关配置)" maxIdle="10" maxWait="10000"/>
  

  注意,要把你的驱动拷到common/lib下,我用的是pointbase因此我拷的是pbclient44.jar到了common/lib下(对pointbase感兴趣的读者可以看我的另一篇文章pointbase数据库学习,里面也提到了我为什么是用pointbase数据库作为讲解)。

二、例子:以下是我的假设的项目ACMEWeb:

在相应程序的web.xml里添加

 

      
        <web-app ....>
  .....
  <resource-ref>
  <res-ref-name>jdbc/AcmeDB</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
  </resource-ref>
  </web-app>
  

然后再server.xml里修改:

 

      
        <Context path="/ACMEWeb" reloadable="true" 
    docBase="E:/eclipseproject/ACMEWeb" 
    workDir="E:/eclipseproject/ACMEWeb/work">
  <Resource name="jdbc/AcmeDB" 
    auth="Container" type="javax.sql.DataSource" 
	driverClassName="com.pointbase.jdbc.jdbcUniversalDriver" 
	url="jdbc:pointbase:server://localhost/acme" 
	username="root" 
	password="root" 
	maxActive="20" 
	maxIdle="10" 
	maxWait="10000"/>
  </Context>
  

建议你把上面的内容编写成为一个xml文件,拷到conf/Catalina/<主机名>/文件夹下。

JNDI程序包:
javax.naming:命名操作;
javax.naming.directory:目录操作;
javax.naming.event:在命名目录服务器中请求事件通知;
javax.naming.ldap:提供LDAP支持;
javax.naming.spi:允许动态插入不同实现。

常用的JNDI操作:
void bind(String sName,Object object);――绑定:把名称同对象关联的过程
void rebind(String sName,Object object);――重新绑定:用来把对象同一个已经存在的名称重新绑定
void unbind(String sName);――释放:用来把对象从目录中释放出来
void lookup(String sName,Object object);――查找:返回目录总的一个对象
void rename(String sOldName,String sNewName);――重命名:用来修改对象名称绑定的名称
NamingEnumeration listBinding(String sName);――清单:返回绑定在特定上下文中对象的清单列表
NamingEnumeration list(String sName);

 http://blog.csdn.net/llp1217/archive/2005/04/04/336037.aspx

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值