JavaWeb:Tomcat下配置数据源链接数据库

习惯了以硬编码的形式在程序中创建数据库链接,用完就在finally语句块中close一下就结束了。对于重视数据库链接数的应用来讲,这样子作会耗费大量的时间和数据库资源,并且硬编码的形式也不甚灵活。 java

 

Tomcat这个Java Web容器下经过配置DataSource(数据源)对象能够解决上面所述的问题。JDBC中的javx.sql.DataSource接口负责创建于数据库的链接,程序中直接从数据源中获取数据库链接。DataSource对象由Servlet容器Tomcat进行管理,其实获取数据库链接是从链接池中选取空闲链接。它基于Java中的JNDIJava 命名与目录接口)来实现。 mysql

 

配置数据源context.xml web

Java Web应用的META-INF目录下新建一个context.xml配置文件,其中的<Resource>元素用于定义JNDI资源,内容以下:sql

  
  
           
  
  
  1. <Context reloadable="true" > 
  2.     <Resource  
  3.         name="jdbc/ DBname " 
  4.         auth="Container"  
  5.         type="javax.sql.DataSource" 
  6.         maxActive="100" maxIdle="30" maxWait="10000" 
  7.         username="root" password="123"  
  8.         driverClassName="com.mysql.jdbc.Driver" 
  9.         url="jdbc:mysql://localhost:3306/ DBname?autoReconnect=true" 
  10.     /> 
  11. </Context> 

 

<Resource>元素的属性说明:   数据库

Name:指定Resource资源的JNDI名称; app

auth:可选填ContainerApplication,指定Resource的管理者; ide

type:指定Resource资源的Java类名; 编码

maxActive:设置数据库链接池中活动状态链接的最大数目,为0则不受限制; url

maxIdle:设置数据库链接池中空闲状态链接的最大数目,为0则不受限制; spa

maxWait:设置数据库链接池中空闲状态链接的最长等待时间,超时则抛出异常,为-1则可无限等待;

username:指定数据库的用户名;

password:指定链接数据库的密码;

driverClassName:指定数据库的JDBC驱动器的Driver实现类名字(这里为MySQL数据库链接);

url:链接数据库的url

 

注:可在<CATALINA_HOME>/conf/server.xml 文件中的对应<Host>元素中如上配置<Resource>子元素以供Tomcat容器内的多个Web应用使用。

 

配置JNDI资源引用web.xml 

Java Web应用中要使用JNDI资源,必须在web.xml中配置对该JNDI资源的引用<resource-ref>元素。内容以下:

  
  
           
  
  
  1. <web-app> 
  2.     <resource-ref> 
  3.         <description>DB Connection</description> 
  4.         <res-ref-name>jdbc/DBname </res-ref-name> 
  5.         <res-type>javax.sql.DataSource</res-type> 
  6.         <res-auth>Container</res-auth> 
  7.     </resource-ref> 
  8. </web-app> 

 

<resource-ref>元素的子元素说明:  

description:对所引用JNDI资源的描述;

res-ref-name:引用的JNDI资源的名称,与上面<Resource>元素中的name属性一致;

res-type:引用的JNDI资源的类名称,与上面<Resource>元素中的type属性一致;

res-auth:引用资源的管理者,上面<Resource>元素中的auth属性一致;

 

Web应用中使用数据源: 

使用DataSource链接数据库,再也不用如下方式来创建到数据库的链接了。

  
  
           
  
  
  1. Connection conn = null
  2.                      
  3. Class.forName("com.mysql.jdbc.Driver"); 
  4.                      
  5. String dbUrl = "jdbc:mysql://localhost:3306/DBname"
  6. String dbUser = "root"
  7. String dbPwd = "123"
  8.                      
  9. conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd); 

 

而是使用相对简单些的JNDI资源访问方式lookup方法,以下:

  
  
           
  
  
  1. Context sourceCtx = new InitialContext(); 
  2. DataSource ds = 
  3. (DataSource) sourceCtx.lookup("java:comp/env/jdbc/ DBname "); 
  4. conn = ds.getConnection(); 

   

注:使用DataSource方式链接数据库,当使用完数据库操做以后调用各类资源对象的close方法时,由Tomcat容器调回这些链接到链接池中进行管理,而不是直接与数据库断开链接。

相关文章
相关标签/搜索