`

java web项目配置数据库连接池

阅读更多

本文包含两部分内容。第一部分是在eclipse下配置项目自身的连接池,这块有问题的比较多主要解决两个异常。第二部分是在Tomcat下配置全局连接池,这块有官方文档问题较少,简单过一下。

    本文的样例老规律,您可以在文尾下载到他。其中,测试获取连接写法如下:

 

Java代码
  1. // 获取Content对象   
  2. javax.naming.Context ctx = new javax.naming.InitialContext();   
  3. javax.sql.DataSource ds = (javax.sql.DataSource)ctx.lookup("java:/comp/env/jdbc/webdb");   
  4. Connection conn = ds.getConnection();  
// 获取Content对象
javax.naming.Context ctx = new javax.naming.InitialContext();
javax.sql.DataSource ds = (javax.sql.DataSource)ctx.lookup("java:/comp/env/jdbc/webdb");
Connection conn = ds.getConnection();

 

第一部分:eclipse下配置连接池

==操作非常简单步骤如下==

    1 ,编辑\WEB-INF\web.xml(如果没有看一下项目是不是j2ee或者java web吧,两个叫法同一回事)。

      向<web-app>尾部追加子结点<resource-ref>具体内容如下:

 

Xml代码
  1. <resource-ref>  
  2.     <!-- 连接池名,一般为“jdbc/<数据源名>”,与context.xml -->  
  3.     <!--   中的"<Resource>.name"对应即可 -->  
  4.     <res-ref-name>jdbc/webdb</res-ref-name>  
  5.     <res-type>javax.sql.DataSource</res-type>  
  6.     <res-auth>Container</res-auth>  
  7. </resource-ref>  
<resource-ref>
    <!-- 连接池名,一般为“jdbc/<数据源名>”,与context.xml -->
    <!--   中的"<Resource>.name"对应即可 -->
    <res-ref-name>jdbc/webdb</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

 

    2 ,编辑\META-INF\context.xml(如果看不到,新建一个吧)。

      内容如下:

 

Xml代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <Context>  
  3.     <WatchedResource>WEB-INF/web.xml</WatchedResource>  
  4.     <Resource name="jdbc/webdb" auth="Container"  
  5.         type="javax.sql.DataSource"  
  6.         driverClassName="com.mysql.jdbc.Driver"  
  7.         url="jdbc:mysql://10.0.2.128:3306/webdb?characterEncoding=UTF-8"  
  8.         username="number"  
  9.         password="znb041"  
  10.         maxActive="200"  
  11.         maxIdle="50"  
  12.         maxWait="3000">  
  13.     </Resource>  
  14. </Context>  
<?xml version="1.0" encoding="UTF-8"?>
<Context>
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <Resource name="jdbc/webdb" auth="Container"
        type="javax.sql.DataSource"
        driverClassName="com.mysql.jdbc.Driver"
        url="jdbc:mysql://10.0.2.128:3306/webdb?characterEncoding=UTF-8"
        username="number"
        password="znb041"
        maxActive="200"
        maxIdle="50"
        maxWait="3000">
    </Resource>
</Context>

 

    3 ,检查环境。

      A)数据库jdbc包,已在lib目录,且被引入Build Path下;
      B)数据库处于运行状态。
      C)创建Tomcat6 Server,启动空跑成功,且访问到默认页面。

    4 ,从eclipse启动“Tomcat v6.0 Server”。

==常见的两个报错==

    1 ,“did not find a matching property”(跟池无关,细节自查)如下所示:

 

Java代码
  1. 2011-7-8 11:24:29 org.apache.tomcat.util.digester.SetPropertiesRule begin   
  2. 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source'  
  3.  to 'org.eclipse.jst.jee.server:webdemo' did not find a matching property.  
2011-7-8 11:24:29 org.apache.tomcat.util.digester.SetPropertiesRule begin
警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source'
 to 'org.eclipse.jst.jee.server:webdemo' did not find a matching property.

 

    解决:

      A)打开Servers视图(eclipse | show view | others... | Servers);
      B)打开前面创建的“Tomcat v6.0 Server”(双击就成),停掉此Tomcat Server;
      C)找到“Server Options”,给“publish module contexts to separate XML files”打勾选中,保存;
      D)再次启动Tomcat Server,解决。

    2 ,“Cannot create JDBC driver of class '' for connect URL 'null'”,如下所示:

 

Java代码
  1. 信息: Server startup in 237 ms   
  2. org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class ''    
  3.         for connect URL 'null'  
  4.     at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(   
  5.         BasicDataSource.java:1452)   
  6.     at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(   
  7.         BasicDataSource.java:1371)  
信息: Server startup in 237 ms
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' 
		for connect URL 'null'
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(
		BasicDataSource.java:1452)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(
		BasicDataSource.java:1371)

 

    解决:

      出现这个提示,说明web.xml中的<resource-ref>已被接受。只是查找不到<res-ref-name>指定的数据源。因此,跟网上所说的anyoneormore in{jdbc包啦,环境变量啦,tomcat配置啦,换MyEclipse啦,重装猫和日蚀啦,杀毒还原系统啦,上传你的代码啦。。。}都无关,只是简单地读不到源。因此,要检查的是:
        A)context.xml标签值,是否真有空,或者null(1%可能,系舍入进来的);
        B)玩个找茬游戏,看看这两字符串区别:“\META-INF\context.xml”,“\WEB-INF\context.xml”……之后,你懂的。

第二部分:Tomcat下配置连接池

==操作非常简单步骤如下==

    1 ,编辑\conf\server.xml。

      向<GlobalNamingResources>尾部追加子结点(切记是追加,别把“<Resource>.name=UserDatabase”的哥给整没了)。内容如下:

 

Xml代码
  1. <GlobalNamingResources>  
  2.     <Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase" pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase"/>  
  3.   
  4.     <!-- name值在下文有对应关系-->  
  5.     <Resource name="jdbc/webdb"  
  6.         auth="Container" driverClassName="com.mysql.jdbc.Driver"  
  7.         maxActive="200" maxIdle="50" maxWait="3000"  
  8.         username="number" password="znb041" type="javax.sql.DataSource"  
  9.         url="jdbc:mysql://10.0.2.128:3306/webdb?characterEncoding=UTF-8" >  
  10.     </Resource>  
  11. </GlobalNamingResources>  
<GlobalNamingResources>
    <Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase" pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase"/>

    <!-- name值在下文有对应关系-->
    <Resource name="jdbc/webdb"
        auth="Container" driverClassName="com.mysql.jdbc.Driver"
        maxActive="200" maxIdle="50" maxWait="3000"
        username="number" password="znb041" type="javax.sql.DataSource"
        url="jdbc:mysql://10.0.2.128:3306/webdb?characterEncoding=UTF-8" >
    </Resource>
</GlobalNamingResources>

 

    2 ,编辑\conf\Catalina\localhost\webdemo.xml(文件名可随便起,没有就新建有就打开看看,结构一样就改改)。

      内容样本如下:

 

Xml代码
  1. <Context path="/webdemo" docBase="/webdemo" debug="0">  
  2.     <!-- 与上文“server.xml”中的<Resource>.name对应 -->  
  3.     <ResourceLink name="jdbc/webdb"  
  4.         global="jdbc/webdb"  
  5.         type="javax.sql.DataSource" />  
  6. <Context>  
<Context path="/webdemo" docBase="/webdemo" debug="0">
    <!-- 与上文“server.xml”中的<Resource>.name对应 -->
    <ResourceLink name="jdbc/webdb"
        global="jdbc/webdb"
        type="javax.sql.DataSource" />
<Context>

 

    3 ,启动\tomcat*\bin\startup.bat,测试。如报异常,请参看第一部分。因为官方有文档,问题不大。

分享到:
评论

相关推荐

    Java jdbc数据库连接池总结

    Java JDBC 数据库连接池总结 Java 语言中,JDBC(Java DataBase Connection)是应用程序与数据库沟通的桥梁。在 Web 应用开发的早期,主要使用的技术是 CGIASPPHP 等。之后,Sun 公司推出了基于 Java 语言的 ...

    java web项目配置tomcat连接池的那些搓事

    本篇文章将详细探讨如何在Java Web项目中配置Tomcat连接池以及涉及的相关知识点。 首先,我们需要了解什么是连接池。连接池是一种在应用程序启动时预先创建并维护一定数量的数据库连接的机制,当应用程序需要访问...

    java web数据库连接池代码

    Java Web数据库连接池代码详解 Java Web开发中,数据库连接池是非常重要的一部分。连接池可以减少数据库连接的频率,提高数据库访问的效率,并且可以减少系统的资源消耗。在Java Web开发中,我们通常使用连接池来...

    java_jdbc数据库连接池总结

    Java JDBC 数据库连接池总结 Java JDBC 数据库连接池是 Java 应用程序访问数据库的基本原理之一。Java 语言通过 JDBC 技术访问数据库,JDBC 是一种“开放”的方案,为数据库应用开发人员和数据库前台工具开发人员...

    Java-jdbc数据库连接池总结.doc

    Java JDBC 数据库连接池技术是Java应用程序访问数据库的关键优化手段,尤其在Web应用程序中,它解决了传统JDBC连接方式存在的效率低下和资源浪费问题。Java JDBC(Java Database Connectivity)是Java语言与各种...

    数据库连接池 java 整理

    数据库连接池在Java编程中扮演着至关重要的角色,特别是在处理大量并发访问的Web应用程序中。数据库连接池是一种管理数据库连接的机制,它允许程序高效地重复使用已建立的数据库连接,而不是每次需要时都创建新的...

    java数据库连接池.rar

    数据库连接池是Java应用程序在处理数据库交互时的重要组件,它能有效地管理数据库连接,提高系统性能,降低资源消耗。在Java开发中,我们通常会使用像C3P0、Druid这样的连接池来优化数据库访问。JDBC(Java Database...

    Java数据库连接池的原理与应用.pdf

    综上所述,数据库连接池是Java Web应用程序中重要的技术组件,它的运用有助于提高数据库操作的效率,并且能够优化整个应用程序的性能表现。掌握连接池的原理与应用,对于Java开发者来说是必不可少的一项技能。

    Java中数据库连接池原理机制的详细讲解.pdf

    ### Java中数据库连接池原理机制详解 #### 一、引言 在现代软件开发中,尤其是在基于Java的应用程序中,数据库连接池技术是一项...在实际项目中,合理地配置和使用数据库连接池,对于提升系统的整体性能具有重要意义。

    Tomcat服务器配置及数据库连接池配置(个人整理版)

    ### Tomcat服务器配置及数据库连接池配置详解 #### 一、Tomcat服务器配置与环境搭建 ##### 1. JDK安装与配置 - **系统环境**:Windows 2003 Server SP3。 - **JDK路径设置**: - `JAVA_HOME` 设置为 `C:\JDK`。 ...

    Tomcat5的数据库连接池配置Tomcat5的数据库连接池配置

    ### Tomcat5的数据库连接池配置详解 #### 引言 在Java Web开发中,数据库连接池是一项关键的技术,能够显著提升应用性能和资源利用效率。对于Tomcat5这一历史较为悠久但依然在某些场景中活跃的服务器软件,正确...

    数据库连接池java和.net

    数据库连接池是现代应用程序开发中的重要组成部分,尤其是在Java和.NET框架中。数据库连接池是一种管理数据库连接的技术,它允许多个请求共享有限数量的数据库连接,而不是为每个请求创建新的连接。这种技术大大提高...

    使用java语言编写的数据库连接池,实现数据库与jsp文件的连接.zip

    本资源"使用Java语言编写的数据库连接池,实现数据库与jsp文件的连接"显然聚焦于如何在Java Web应用中有效地管理数据库连接,以提高系统效率和响应速度。JSP(JavaServer Pages)是一种动态网页技术,它允许开发人员...

    自定义的数据库连接池

    数据库连接池是数据库管理中的重要概念,它在Java Web应用中尤其常见,主要用于优化数据库的连接管理和资源利用。自定义数据库连接池是为了更好地适应特定应用的需求,提高数据存取的效率,减少系统开销,避免频繁...

    java apache 数据库连接池 天涯浪子

    在Java Web开发中,数据库连接池是不可或缺的一部分,尤其是在高并发环境下。 天涯浪子可能是在指一个开发者或教程作者,他分享了关于如何在Java项目中使用Apache数据库连接池的具体方法和实践经验。以下是对这个...

Global site tag (gtag.js) - Google Analytics