开发者社区> 技术小阿哥> 正文

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

简介:
+关注继续查看

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

 

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

 

配置数据源context.xml

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


  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名称;

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

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

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

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

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容器调回这些连接到连接池中进行管理,而不是直接与数据库断开连接。




本文转自 xxxx66yyyy 51CTO博客,原文链接:http://blog.51cto.com/haolloyin/396210,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
2013年7月14日-Java连接Oracle数据库
DataBaseConn: /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package query; import java.sql.Connection; import java.sql.ResultSet; import ja
854 0
关于java连接SQL数据库
版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/twilight_karl/article/details/53307371 1 .
736 0
JAVA中jdbc连接数据库 sql注入与PrepareStatement预处理
JAVA中jdbc连接数据库 sql注入与PrepareStatement预处理
27 0
ant使用ftp上传数据时配置的一个报错问题
error:ANT FTP upload file: 425 Unable to build data connection: Connection timed out 以下是xml原配置: &lt;ftp action="put"    server="10.254.21.117"    userid="***"    password="****"    dir
1388 0
Mac下配置Oracle数据库客户端远程连接数据库服务器
下载mac数据库客户端: 地址:http://www.oracle.com/technetwork/topics/intel-macsoft-096467.html 下载这俩个:(来源:http://www.
3342 0
SpringBoot:配置数据源详解
SpringBoot:配置数据源详解
110 0
SAP CRM WebClient UI的配置存储数据库表
SAP CRM WebClient UI的配置存储数据库表
21 0
SRPING02_配置数据源、原始注解开发、新注解开发、集成Junit代码实现(二)
SRPING02_配置数据源、原始注解开发、新注解开发、集成Junit代码实现(二)
34 0
SRPING02_配置数据源、原始注解开发、新注解开发、集成Junit代码实现(四)
SRPING02_配置数据源、原始注解开发、新注解开发、集成Junit代码实现(四)
36 0
Tomcat使用线程池配置高并发连接
Tomcat使用线程池配置高并发连接1:配置executor属性 打开/conf/server.xml文件,在Connector之前配置一个线程池: namePrefix="tomcatThreadPool-" maxThreads="1000" maxIdleTime="300000" minSpareThreads="200"/> 重要参数说明:name:共享线程池的名字。
1165 0
13689
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载