Tomcat内核详解(十五):Tomcat的JNDI

本文详细介绍了在Tomcat中进行JNDI配置的方法,包括局部配置与全局配置的具体步骤,并探讨了如何在Spring框架中引用这些配置的数据源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一般来讲,要使用JNDI需要完成以下三个步骤:

  1. 驱动器jar包放置;
  2. 配置文件的配置;
  3. 在程序中调用;

根据范围层次,可分为两种配置方案。一种是Web应用层次上的局部配置方式,它只可以在自己的Web项目中使用。另一个是全局配置方式,通过资源连接,它可以供该Tomcat下的所有Web应用使用;

4.1 Web应用的局部配置方式

找到Tomcat的server.xml找到工程的Context节点,添加一个私有数据源

<Context docBase="WebApp" path="/WebApp" reloadable="true" source="org.eclipse.jst.jee.server:WebApp"> 

<Resource 

    name="jdbc/mysql"  

    scope="Shareable"  

    type="javax.sql.DataSource" 

    factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" 

    url="jdbc:mysql://localhost:3306/test" 

    driverClassName ="com.mysql.jdbc.Driver" 

    username="root" 

    password="root" 

/> 

</Context> 

4.2 服务器的全局配置方式

  • 配置全局JNDI数据源,应用到单个应用

找到Tomcat的server.xml中GlobalNamingResources节点,在节点下加一个全局数据源

<GlobalNamingResources>

<Resource 

    name="jdbc/mysql"  

    scope="Shareable"  

    type="javax.sql.DataSource" 

    factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" 

    url="jdbc:mysql://localhost:3306/test" 

    driverClassName ="com.mysql.jdbc.Driver" 

    username="root" 

    password="root" 

/> 

</GlobalNamingResources>

找到要应用此JNDI数据源的工程Context节点,增加对全局数据源的引用ResourceLink 

<Context docBase="WebApp" path="/WebApp" reloadable="true"> 

    <ResourceLink global="jdbc/mysql" name="jdbc/mysql" type="javax.sql.DataSource" /> 

</Context> 

【Spring对JNDI数据源的引用】

在applicationContext.xml中加一个bean,替代原来的dataSource

 

  1. <jee:jndi-lookup id="dataSource" jndi-name="jdbc/mysql" /> 

对Tomcat内部来讲,全局资源和局部命名资源都有各自的命令上下文。全局命名资源对Web应用是不可见的。只能通过ResourceLink从全局命名资源中查找对应的资源。局部部署只能有对应的web 应用使用,而全局部署可供所有的Web 应用使用。

5.Tomcat的标准资源

Tomcat标准资源包括如下几类:

  1. 普通JavaBean资源:

主要用于创建某个Java类对象供Web应用使用。

  1. UserDatabase资源:

它一般会配置成为一个全局资源,作为具有认证功能的数据源使用,一般该数据源通过XML(conf/tomcat-user.xml)文件存储

      2.JavaMail会话资源:

Tomcat提供JavaMail服务,可以使用发送Email功能;

     3.JDBC数据源资源

默认的JDBC数据源基于DBCP连接池;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值