Tomcat数据库连接池的配置方法总结(叶涛为您解答)
实例使用的Tomcat版本为6.0
方法一: 在Tomcat的conf/context.xml中配置
在Tomcat\apache-tomcat-6.0.33\conf目录下的context.xml文件中配置默认值如下:
<?xml version='1.0' encoding='utf-8'?> <Context><WatchedResource>WEB-INF/web.xml</WatchedResource> </Context>
配置连接池
![](/assets/blank.gif)
<?xml version='1.0' encoding='utf-8'?> <Context><WatchedResource>WEB-INF/web.xml</WatchedResource><!--配置oracle数据库的连接池--><Resource name="jdbc/oracleds"author="Container"type="javax.sql.DataSource"maxActive="100"maxIdle="30"maxWait="10000"username="scott"password="tiger"driverClassName="oracle.jdbc.dirver.OracleDriver"url="jdbc:oracle:thin:@127.0.0.1:1521:ora9" /><!--配置mysql数据库的连接池, 需要做的额外步骤是将mysql的Java驱动类放到tomcat的lib目录下 maxIdle 连接池中最多可空闲maxIdle个连接 minIdle 连接池中最少空闲maxIdle个连接 initialSize 初始化连接数目 maxWait 连接池中连接用完时,新的请求等待时间,毫秒 username 数据库用户名password 数据库密码--><Resource name="jdbc/mysqlds" auth="Container" type="javax.sql.DataSource" username="root" password="root" maxIdle="30" maxWait="10000" maxActive="100"driverClassName="com.mysql.jdbc.Driver"url="jdbc:mysql://127.0.0.1:3306/db_blog" /></Context>
![](/assets/blank.gif)
配置好后需要注意的两个步骤
1.将对应数据库的驱动类放到tomcat的lib目录西安
2.重新启动tomcat服务器,让配置生效
在web应用程序的web.xml中设置数据源参考,如下:
在<web-app></web-app>节点中加入下面内容
![](/assets/blank.gif)
<resource-ref><description>mysql数据库连接池</description><!-- 参考数据源名字,同Tomcat中配置的Resource节点中name属性值"jdbc/mysqlds"一致 --><res-ref-name>jdbc/mysqlds</res-ref-name><!-- 资源类型 --><res-type>javax.sql.DataSource</res-type><res-auth>Container</res-auth><res-sharing-scope>Shareable</res-sharing-scope> </resource-ref>
![](/assets/blank.gif)
错误解决
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initialat javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)at javax.naming.InitialContext.lookup(InitialContext.java:392)at com.iblog.util.DBPoolUtil.<clinit>(DBPoolUtil.java:34)
解决方案:
上面的异常信息是配置文件中JNDI没有初始化造成的
如果下面的问题都不存在
1.要去检查下配置文件中连接数据库的URL参数是否正确2.以及是否导入了正常的包3.检查在Tomcat中conf/server.xml文件,检查是否设置useNaming="false",如果是,去掉
2.那就是通过main方法测试的,这个数据源不支持这样的测试方法,程序要运行在Tomcat中才能找到相应的数据源.[我在测试时犯这样的错导致上面错误出现]
![](/assets/blank.gif)
<%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%> <%@ page import="java.sql.*" %> <%@ page import="javax.naming.*" %> <%@ page import="javax.sql.DataSource" %> <html> <head> <title>Tomcat6.0 JNDI!</title> </head> <body> Tomcat连接池测试,获取数据源 <br> <% try { //初始化查找命名空间Context ctx = new InitialContext(); //参数java:/comp/env为固定路径 Context envContext = (Context)ctx.lookup("java:/comp/env"); //参数jdbc/mysqlds为数据源和JNDI绑定的名字DataSource ds = (DataSource)envContext.lookup("jdbc/mysqlds"); Connection conn = ds.getConnection(); conn.close(); out.println("<span style='color:red;'>JNDI测试成功<span>"); } catch (NamingException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } %> </body> </html>
![](/assets/blank.gif)
运行效果:
方法二:在Tomcat的conf/server.xml中配置
打开tomcat的conf/server.xml文件,找到<GlobalNamingResources></GlobalNamingResources>节点,默认的内容如下
![](/assets/blank.gif)
<GlobalNamingResources><Resource name="UserDatabase" auth="Container"type="org.apache.catalina.UserDatabase"description="User database that can be updated and saved"factory="org.apache.catalina.users.MemoryUserDatabaseFactory"pathname="conf/tomcat-users.xml" /> </GlobalNamingResources>
![](/assets/blank.gif)
在该节点中加入相关的池配置信息,如下
![](/assets/blank.gif)
<GlobalNamingResources><Resource name="UserDatabase" auth="Container"type="org.apache.catalina.UserDatabase"description="User database that can be updated and saved"factory="org.apache.catalina.users.MemoryUserDatabaseFactory"pathname="conf/tomcat-users.xml" /><!--配置mysql数据库的连接池, 需要做的额外步骤是将mysql的Java驱动类放到tomcat的lib目录下 --><Resource name="jdbc/mysqlds" auth="Container" type="javax.sql.DataSource" username="root" password="root" maxIdle="30" maxWait="10000" maxActive="100"driverClassName="com.mysql.jdbc.Driver"url="jdbc:mysql://127.0.0.1:3306/db_blog" /></GlobalNamingResources>
![](/assets/blank.gif)
在tomcat的conf/context.xml文件中的<Context></Context>节点中加入如下内容
<ResourceLink name="jdbc/mysqlds" global="jdbc/mysqlds" type="javax.sql.DataSource"/>
然后在web项目中的WEB-INF目录下的web.xml中配置
![](/assets/blank.gif)
<resource-ref><description>mysql数据库连接池</description><!-- 参考数据源名字,同Tomcat中配置的Resource节点中name属性值"jdbc/mysqlds"一致 --><res-ref-name>jdbc/mysqlds</res-ref-name><!-- 资源类型 --><res-type>javax.sql.DataSource</res-type><res-auth>Container</res-auth><res-sharing-scope>Shareable</res-sharing-scope> </resource-ref>
![](/assets/blank.gif)
同样配置好后,需要重新启动服务器,让配置生效.
方法三:在Tomcat的conf/server.xml中配置虚拟目录时配置
在配置虚拟目录时,也就是在配置conf下面的server.xml时,在context标签内添加池配置.
在说该方法之前,先说一下,如何用tomcat配置虚拟目录
在tomcat\conf下server.xml中找到
<Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true"xmlValidation="false" xmlNamespaceAware="false"> </Host>
在其中添加:
<Context path="/website" docBase="F:/myweb" reloadable="true"></Context>
注意:
docBase要改成你的项目目录。
path为虚拟路径,访问时的路径,注意:一定要加“/” debug建议设置为0
reloadable设置为true。
这样重新启动tomcat
实例中如下配置
<Context path="/website" docBase="D:/program files/Tomcat/apache-tomcat-6.0.33/webapps/iblog.war" reloadable="true"> </Context>
接下来添加池配置,如下
![](/assets/blank.gif)
<!--配置虚拟目录--> <Context path="/website" docBase="D:/program files/Tomcat/apache-tomcat-6.0.33/webapps/iblog.war" reloadable="true"><Resource name="jdbc/mysqlds" auth="Container" type="javax.sql.DataSource" username="root" password="root" maxIdle="30" maxWait="10000" maxActive="100"driverClassName="com.mysql.jdbc.Driver"url="jdbc:mysql://127.0.0.1:3306/db_blog"/> </Context>
![](/assets/blank.gif)
启动服务器,测试,注意因为我们配置了path值为”/website”,所以访问的路径应该为website.如下图:
方法四:在Web项目中的META-INF目录下新建一个文件context.xml,写入配置
注意:是META-INF目录下,不是WEB-INF目录下
![](/assets/blank.gif)
<?xml version='1.0' encoding='utf-8'?> <Context><Resource name="jdbc/mysqlds" auth="Container" type="javax.sql.DataSource" username="root" password="root" maxIdle="30" maxWait="10000" maxActive="100"driverClassName="com.mysql.jdbc.Driver"url="jdbc:mysql://127.0.0.1:3306/db_blog"logAbandoned="true" /> </Context>
![](/assets/blank.gif)
Tomcat数据库连接池的配置方法总结(叶涛为您解答)相关推荐
- java tomcat数据库连接池_tomcat配置数据库连接池2
数据库连接是比较耗时的操作,如果每次访问数据库都开闭一次连接的话,在大批量访问时,必然会导致性能问题,于是这里成为了你的性能瓶颈.为了解决这个问题, 为了简化通过连接池获取数据库连接的过程,JDBC2 ...
- win7 64位系统配置服务器,Tomcat服务器win764位配置方法
Tomcat服务器win764位配置方法 腾讯视频/爱奇艺/优酷/外卖 充值4折起 打开底部的网盘链接,将压缩包解压,如图 打开文件夹,在目录下找到bin文件夹,找到里面的startup.bat.双击 ...
- tomcat连接池的配置与使用
今天做接jsp的作业,在页面跳转的时候一直遇到个问题,"org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driv ...
- mysql配置数据库连接池_三种数据库连接池的配置
三种数据库连接池的配置及使用(For JDBC) 连接池的优缺点 优点 使用连接池的最主要的优点是性能.创建一个新的数据库连接所耗费的时间主要取决于网络的速 度以及应用程序和数据库服务器的 ( 网络 ...
- Spring Boot--Druid连接池的配置方法
原文网址:Spring Boot--Druid连接池的配置方法_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍Spring Boot的Druid连接池的配置方法. Druid 是阿里巴巴开源的 ...
- 数据库连接池优化配置(druid,dbcp,c3p0)
主要描述了数据库连接池参数配置的准则,针对常用的数据库连接池(c3p0,dbcp,druid)给出推荐的配置. 考虑因素 1:当前连接DB的规模 2:并发情况 3:执行db的响应时间 配置考虑 1 ...
- druid mysql 配置优化_数据库连接池优化配置(druid,dbcp,c3p0)
考虑因素 1:当前连接DB的规模 2:并发情况 3:执行db的响应时间 配置考虑 1:初始化连接:可考虑设置为3个连接 .对于db规模特别大的情况下可考虑设置为1个.避免启动时间过长: 2:最小连 ...
- nhibernate访问mysql配置_NHibernate各种数据库连接参数文件配置方法说明
/NHibernate各种数据库连接参数文件配置方法说明 //配置文件Config/Hibernate.cfg.xml内容如下所示: NHibernate.Driver.SqlClientDriver ...
- 浅谈tomcat的配置及数据库连接池的配置
1.如何修改tomcat的端口 在某些情况下,可能需要修改tomcat监听的端口8080,比如: a.需要启动两份tomcat服务器 b.某个服务占用了8080端口(1433,1521,3306... ...
最新文章
- cpld xilinx 定义全局时钟_AutoSAR中的时钟同步机制
- js常用阻止冒泡事件
- 超600人!近5小时直播!录屏+彩蛋+PPT…你要的都在这!
- 成都python数据分析师职业技能_数据分析师需要什么技能,数据分析行业都有什么职业?...
- js new Date 创建时间默认是8点
- spring mvc 工作流程
- 2. PHP 自动转义函数
- vc10的C2664和C2065错误
- OpenCV-图像处理(20、霍夫变换-直线)
- 4款idea主题,非常的炫酷
- 计算机组装与维护doc,《计算机组装与维护》课程教案.doc
- 用python算股票β系数_请教达人:Stata中计算多只股票月度beta系数的do文件怎么编写?...
- Java基础系列(五)——Collection集合Map源码详解
- QT多线程之:moveToThread
- 解决JS双击事件dblclick触发时,同时会执行click事件中的语句
- 【java集合】ConcurrentHashMap源码分析
- Mac电脑快速切换输入法!自动切换输入法!
- 恐怖系列丨互联网幕后攻防:咳血的独角兽之血腥丛林中的无底线战争
- java 解析p12_java引用微信支付的p12证书文件
- php面向对象之多态
热门文章
- 2004世界中文BBS爆笑签名档
- C++编程学习52个经典网站 强力推荐
- 我们的工作方式:窥视Envato Tuts +团队的生活
- 最近一些的有意思的思考-记录成长
- 解决UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x8c in position : illegal multibyte sequence
- 东东在用计算机计算一道题时 把被除数的前,人教版三年级数学下册开学测试卷(带答案)...
- Linux perf获得性能计数器
- 广西高中有没有计算机课程,【广西高中课改网】_广西高中课改网
- python绘制彩色蟒蛇代码_python画彩色蟒蛇
- Verilog 延时模型