spring配置JNDI数据源

准备工作:tomcat9+maven3+spring4

在spring配置JDNI数据源之前先了解下连接池、数据源、JNDI三者间的关系

连接池:
连接池是由容器(比如Tomcat)提供的,用来管理池中的连接对象。
连接池自动分配连接对象并对闲置的连接进行回收。
连接池中的连接对象是由数据源(DataSource)创建的。
连接池(Connection Pool)用来管理连接(Connection)对象。

数据源:
数据源(DataSource)用来连接数据库,创建连接(Connection)对象。
java.sql.DataSource接口负责建立与数据库的连接
由Tomcat提供,将连接保存在连接池中。

JNDI(Java Naming and Directory Interface,Java命名和目录接口):
在程序中使用JNDI获取数据源。

总结:通过数据源创建的连接对象被统一的放入到连接池中进行管理。

JNDI数据源属性解释:

name:表示以后要查找的名称。通过此名称可以找到DataSource,此名称任意更换,但是程序中最终要查找的就是此名称.
auth:由容器进行授权及管理,指的用户名和密码是否可以在容器上生效
type:此名称所代表的类型,现在为javax.sql.DataSource
factory:指的是该Resource配置使用的是哪个数据源配置类,这里使用的是commons-dbcp.jar及其依赖的jar包,都放在tomcat的lib下
maxActive:表示一个数据库在此服务器上所能打开的最大连接数
maxIdle:表示一个数据库在此服务器上维持的最小连接数
maxWait:最大等待时间。10000毫秒
username:数据库连接的用户名
password:数据库连接的密码
driverClassName:数据库连接的驱动程序
url:数据库连接的地址

备注:tomcat版本不同则factory值不一样

tomcat7:或者tomcat8:factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"

tomcat9:factory="org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory"

spring配置JNDI数据源三种方式:

方法一:单个应用独享数据源

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





  
  
  
  
  
  
  
  

  
  
    
    
  

  
  

    
    


    
    
    
    
    
    
    
    

    
    


    

    
    

      
      

      
      
        
        
      

      

        
        

        
        
			   
		
		
		
				
      
    
  

总结:优点简单,缺点重用性差

方法二:配置全局JNDI数据源,应用到单个应用

第一步:在Tomcat的server.xmlGlobalNamingResources节点下加一个全局数据源

第二步:在Tomcat的server.xmlContext节点,增加对全局数据源的引用ResourceLink 

server.xml文件配置如下:





  
  
  
  
  
  
  
  

  
  
    
    
	
		
			  
  

  
  

    
    


    
    
    
    
    
    
    
    

    
    


    

    
    

      
      

      
      
        
        
      

      

        
        

        
        
			   
		
		
			  
				
      
    
  

还有一种方式:在tomcat的context.xmlcontext节点引入Resource

context.xml文件配置如下:






    
    
    WEB-INF/web.xml


    
    
    

总结:优点:重用性,可控性 缺点:配置相对第三种方法要繁琐一点,每个工程都得配

方法三:配置全局JNDI数据源,应用到所有Tomcat下部署的应用

第一步:在Tomcat的server.xmlGlobalNamingResources节点下加一个全局数据源

第二步:在Tomcat的context.xmlContext节点下加一个ResourceLink节点对第一步配置的数据源进行引用

server.xml文件配置如下:





  
  
  
  
  
  
  
  

  
  
    
    
	
		
			  
  

  
  

    
    


    
    
    
    
    
    
    
    

    
    


    

    
    

      
      

      
      
        
        
      

      

        
        

        
        
			   
		
				
      
    
  

context.xml文件配置如下:






    
    
    WEB-INF/web.xml


    
    
	
	
	

总结:优点:重用性,一次性到位 缺点:没有可控性

spring配置文件引入JNDI数据源:


    

总结:

ResourceLink中global的name与server.xml中GlobalNamingResources的Resource的name一致
ResourceLink中name与spring中applicationContext.xml中jndi-name的name一致
项目启动加载spring配置文件applicationContext.xml根据jndi-name的name找到context.xml文件中ResourceLink的name,
从而得到对应的global的名字,进而找到全局jndi数据源

 

你可能感兴趣的:(sping)