欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > java >内容正文

java

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

发布时间:2025/7/14 java 93 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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资源,内容如下:

  • <Context reloadable="true" > 
  •     <Resource  
  •         name="jdbc/ DBname " 
  •         auth="Container"  
  •         type="javax.sql.DataSource" 
  •         maxActive="100" maxIdle="30" maxWait="10000" 
  •         username="root" password="123"  
  •         driverClassName="com.mysql.jdbc.Driver" 
  •         url="jdbc:mysql://localhost:3306/ DBname?autoReconnect=true" 
  •     /> 
  • </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>元素。内容如下:

  • <web-app> 
  •     <resource-ref> 
  •         <description>DB Connection</description> 
  •         <res-ref-name>jdbc/DBname </res-ref-name> 
  •         <res-type>javax.sql.DataSource</res-type> 
  •         <res-auth>Container</res-auth> 
  •     </resource-ref> 
  • </web-app> 
  •  

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

     

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

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

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

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

     

    Web应用中使用数据源: 

    使用DataSource连接数据库,不再用以下方式来建立到数据库的连接了。

  • Connection conn = null
  •                      
  • Class.forName("com.mysql.jdbc.Driver"); 
  •                      
  • String dbUrl = "jdbc:mysql://localhost:3306/DBname"
  • String dbUser = "root"
  • String dbPwd = "123"
  •                      
  • conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd); 
  •  

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

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

     

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

    转载于:https://blog.51cto.com/haolloyin/396210

    总结

    以上是生活随笔为你收集整理的JavaWeb:Tomcat下配置数据源连接数据库的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。