`

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,测试。如报异常,请参看第一部分。因为官方有文档,问题不大。

分享到:
评论

相关推荐

    毕业设计基于STC12C5A、SIM800C、GPS的汽车防盗报警系统源码.zip

    STC12C5A通过GPS模块获取当前定位信息,如果车辆发生异常震动或车主打来电话(主动请求定位),将通过GSM发送一条定位短信到车主手机,车主点击链接默认打开网页版定位,如果有安装高德地图APP将在APP中打开并展示汽车当前位置 GPS模块可以使用多家的GPS模块,需要注意的是,当前程序对应的是GPS北斗双模芯片,故只解析 GNRMC数据,如果你使用GPS芯片则应改为GPRMC数据即可。 系统在初始化的时候会持续短鸣,每初始化成功一部分后将长鸣一声,如果持续短鸣很久(超过20分钟),建议通过串口助手查看系统输出的调试信息,系统串口默认输出从初始化开始的所有运行状态信息。 不过更建议你使用SIM868模块,集成GPS.GSM.GPRS,使用更加方便

    基于tensorflow2.x卷积神经网络字符型验证码识别.zip

    基于tensorflow2.x卷积神经网络字符型验证码识别 卷积神经网络(Convolutional Neural Networks, CNNs 或 ConvNets)是一类深度神经网络,特别擅长处理图像相关的机器学习和深度学习任务。它们的名称来源于网络中使用了一种叫做卷积的数学运算。以下是卷积神经网络的一些关键组件和特性: 卷积层(Convolutional Layer): 卷积层是CNN的核心组件。它们通过一组可学习的滤波器(或称为卷积核、卷积器)在输入图像(或上一层的输出特征图)上滑动来工作。 滤波器和图像之间的卷积操作生成输出特征图,该特征图反映了滤波器所捕捉的局部图像特性(如边缘、角点等)。 通过使用多个滤波器,卷积层可以提取输入图像中的多种特征。 激活函数(Activation Function): 在卷积操作之后,通常会应用一个激活函数(如ReLU、Sigmoid或tanh)来增加网络的非线性。 池化层(Pooling Layer): 池化层通常位于卷积层之后,用于降低特征图的维度(空间尺寸),减少计算量和参数数量,同时保持特征的空间层次结构。 常见的池化操作包括最大池化(Max Pooling)和平均池化(Average Pooling)。 全连接层(Fully Connected Layer): 在CNN的末端,通常会有几层全连接层(也称为密集层或线性层)。这些层中的每个神经元都与前一层的所有神经元连接。 全连接层通常用于对提取的特征进行分类或回归。 训练过程: CNN的训练过程与其他深度学习模型类似,通过反向传播算法和梯度下降(或其变种)来优化网络参数(如滤波器权重和偏置)。 训练数据通常被分为多个批次(mini-batches),并在每个批次上迭代更新网络参数。 应用: CNN在计算机视觉领域有着广泛的应用,包括图像分类、目标检测、图像分割、人脸识别等。 它们也已被扩展到处理其他类型的数据,如文本(通过卷积一维序列)和音频(通过卷积时间序列)。 随着深度学习技术的发展,卷积神经网络的结构和设计也在不断演变,出现了许多新的变体和改进,如残差网络(ResNet)、深度卷积生成对抗网络(DCGAN)等。

    【三维装箱】遗传和模拟退火算法求解三维装箱优化问题【含Matlab源码 031期】.zip

    【三维装箱】遗传和模拟退火算法求解三维装箱优化问题【含Matlab源码 031期】.zip

    自己编写的python 程序计算cpk/ppk

    cpk&ppk python 小程序,品友点评

    基于Springboot开发的分布式抽奖系统.zip

    基于springboot的java毕业&课程设计

    课设毕设基于SpringBoot+Vue的影城管理系统 LW+PPT+源码可运行.zip

    课设毕设基于SpringBoot+Vue的影城管理系统 LW+PPT+源码可运行.zip

    MC教育版(免登录版)

    MC教育版(免登录版)

    农作物叶片病害分类和分割数据集【数据集+标签】

    包含13993张数据和对应的13993张mask分割模版,数据集用不同目录保存,也可以用作分类数据集 类别包含:桃子、辣椒、覆盆子、大豆、南瓜、草莓

    基于vue+springboot二手交易网站.zip

    基于springboot的java毕业&课程设计

    【三维装箱】遗传算法求解三维装箱优化问题【含Matlab源码 3408期】.zip

    【三维装箱】遗传算法求解三维装箱优化问题【含Matlab源码 3408期】.zip

    基于javaspring 开发框架的培训教程 TP1.zip

    基于javaspring 开发框架的培训教程 TP1.zip

    信号和系统 MATLAB 代码:探索信号生成、系统建模、傅立叶分析、滤波器设计、采样和控制系统仿真.zip

    1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    医院网上预约系统设计与开发/毕业设计

    医院网上预约系统设计与开发/毕业设计 JSP基于SSM网上医院预约挂号系统 科室信息: 科室id,科室名称,科室介绍,成立日期,负责人 医生信息: 医生工号,登录密码,所在科室,医生姓名,性别,医生照片,出生日期,医生职位,工作经验,联系方式,擅长,医生介绍 病人信息: 病人id,医生,病人姓名,性别,身份证号,联系电话,病人病例,登记时间 预约信息: 预约id,预约用户,预约医生,预约日期,时段,联系电话,下单时间,处理状态,医生回复 新闻信息: 新闻id,新闻标题,新闻图片,新闻内容,新闻日期,新闻来源 留言: 留言id,留言标题,留言内容,留言人,留言时间,管理回复,回复时间 用户: 用户名,登录密码,姓名,性别,出生日期,用户照片,联系电话,邮箱,家庭地址,注册时间

    企业数据治理之数据质量治理方案.pptx

    企业数据治理之数据质量治理方案

    MySQL8.4.0 LTS(mysql-8.4.0-10.fc38.x86-64.rpm-bundle.tar)

    MySQL8.4.0 LTS(mysql-8.4.0-10.fc38.x86_64.rpm-bundle.tar)适用于Linux Fedora 38 (x86, 64-bit)

    1659 jsp游乐园管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目源码

    一、源码特点 java 医疗数据管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助采用了数据模型进行区块链设计,系统具有完整的源代码和数据库,系统采用web模式,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql,使用java语言开发。 二、功能介绍 如博客中介绍 三、注意事项 1、管理员账号:admin 密码:admin 数据库配置文件DBO.java ,权限包括管理员,用户 2、开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql,使用java语言开发。 3、数据库文件名是jspyly 系统名称yly 4、地址:http://127.0.0.1:8080/yly/qt/index.jsp

    基于SpringBoot 搭建的番茄短视频-后台管理系统.zip

    基于springboot的java毕业&课程设计

    54.医院分诊管理系统的设计与实现-基于SSM框架+ Mysql+Java设计与实现(可运行源码+数据库+lw)毕业设计管理系统

    可运行源码(含数据库脚本)+开发文档+lw(高分毕设项目) java期末大作业毕业设计项目管理系统计算机软件工程大数据专业 内容概要:通过陆丰市医院门诊分诊系统设计的研究背景、研究的意义和目的,通过运用java语言和ssm框架来建立一款分诊管理系统,能够帮助医院提高工作效率,减少工作中出现的错误率。设计出挂号管理、排队候诊管理以及叫号管理等多个子模块,绘制出实体关系图,利用MySQL技术建立数据库达成了软件与数据库的互通。最后对工作进行了总结和展望。 关键词:分诊管理系统;功能建模;java 全套项目源码+详尽文档,一站式解决您的学习与项目需求。 适用人群: 计算机、通信、人工智能、自动化等专业的学生、老师及从业者。 使用场景及目标: 无论是毕设、期末大作业还是课程设计,一键下载,轻松部署,助您轻松完成项目。 项目代码经过调试测试,确保直接运行,节省您的时间和精力。 其他说明: 项目整体具有较高的学习借鉴价值,基础能力强的可以在此基础上修改调整,以实现不同的功能。

    基于Springboot和SpringCloud的博客.zip

    基于springboot的java毕业&课程设计

Global site tag (gtag.js) - Google Analytics