最近很多朋友喜欢上iphone,但是大家却不知道如何去做,别担心有给你解答,史上最全最棒的详细解说让你一看就懂。
1Tomcat数据库连接池的配置方法总结
数据库连接是一种关键的有限的昂贵的资源,这在多用户网页应用程序中体现的尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标,数据库连接池正是针对这个问题提出的.
word-wrap: break-word; word-break: break-all; color: rgb(101, 109, 119); font-family: 宋体; font-size: 14px; line-height: 25px; ">数据库连接池负责分配,管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏,这样可以明显提高对数据库操作的性能.
数据库连接池在初始化的时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是又最小数据库连接数来设定的,无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中.
数据库连接池的最小连接数和最大连接数的设置要考虑到下列几个因素:
1.最小连接数是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费.
2.最大连接数是连接池申请的最大连接数,如果数据库连接请求超过次数,后面的数据库连接请求将被加入到等待对了中,这回影响之后的数据库操作
如果最小连接数与最大连接数相差太大,那么最先的连接请求将会获利,之后超过最小连接数量的连接请求等价于建立一个新的数据库连接,不过,这些小于最小连接数的数据库连接在使用完不会马上被释放,它将被放到连接池中等待重复使用或是空闲超时被释放.
实例使用的Tomcat版本为6.0
方法一: 在Tomcat的conf/中配置
在Tomcatapache-tomcat-6.0.33conf目录下的文件中配置默认值如下:
?xml version="1.0" encoding="utf-8"?ContextWatchedResourceWEB-INF/
配置连接池:
?xml version="1.0" encoding="utf-8"?
ContextWatchedResourceWEB-INF/!配置数据库的连接池 name="jdbc/oracleds"author="Container"type="&&&&&&&&&&&&&&&; /!--配置mysql数据库的连接池, 需要做的额外步骤是将mysql的Java驱动类放到tomcat的lib目录下 maxIdle 连接池中最多可空闲maxIdle个连接 minIdle 连接池中最少空闲maxIdle个连接 initialSize 初始化连接数目 maxWait 连接池中连接用完时,新的请求等待时间,毫秒 username 数据库用户名password 数据库密码--Resource name="jdbc/mysqlds" auth="Container" type="&; username="root" password="root" maxIdle="30" maxWait="10000" maxActive="100"driverClassName="&&&; //Context
配置好后需要注意的两个步骤
1.将对应数据库的驱动类放到tomcat的lib目录西安
2.重新启动tomcat服务器,让配置生效
在web应用程序的中设置数据源参考,如下:
在web-app/web-app节点中加入下面内容
resource-ref
descriptionmysql数据库连接池/description !-- 参考数据源名字,同Tomcat中配置的Resource节点中name属性值"jdbc/mysqlds"一致 -- res-ref-namejdbc/mysqlds/res-ref-name !-- 资源类型 -- res- res-authContainer/res-auth res-sharing-scopeShareable/res-sharing-scope/resource-ref
错误解决:
: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:
at () () () () com.iblog.util.DBPoolUtil.clinit(DBPoolUtil.java:34)
解决方案:
上面的异常信息是配置文件中JNDI没有初始化造成的
如果下面的问题都不存在
1.要去检查下配置文件中连接数据库的URL参数是否正确2.以及是否导入了正常的包3.检查在Tomcat中conf/server.xml文件,检查是否设置useNaming="false",如果是,去掉
2.那就是通过main方法测试的,这个数据源不支持这样的测试方法,程序要运行在Tomcat中才能找到相应的数据源.[我在测试时犯这样的错导致上面错误出现]
%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%
%@ page import="java.sql.*" % %@ page import="javax.naming.*" % %@ page import="&; %html head titleTomcat6.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("spanJNDI测试成功span"); } catch (NamingException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } % /body /html
运行效果:
方法二:在Tomcat的conf/server.xml中配置
打开tomcat的conf/server.xml文件,找到GlobalNamingResources/GlobalNamingResources节点,默认的内容如下
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
在该节点中加入相关的池配置信息,如下
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="&; username="root" password="root" maxIdle="30" maxWait="10000" maxActive="100"driverClassName="&&&; / /GlobalNamingResources
在tomcat的conf/context.xml文件中的Context/Context节点中加入如下内容
ResourceLink name="jdbc/mysqlds" global="jdbc/mysqlds" type="&;/
然后在web项目中的WEB-INF目录下的web.xml中配置
resource-ref
descriptionmysql数据库连接池/description !-- 参考数据源名字,同Tomcat中配置的Resource节点中name属性值"jdbc/mysqlds"一致 -- res-ref-namejdbc/mysqlds/res-ref-name !-- 资源类型 -- res- res-authContainer/res-auth res-sharing-scopeShareable/res-sharing-scope/resource-ref
同样配置好后,需要重新启动服务器,让配置生效.
方法三:在Tomcat的conf/server.xml中配置虚拟目录时配置
在配置虚拟目录时,也就是在配置conf下面的server.xml时,在context标签内添加池配置.
在说该方法之前,先说一下,如何用tomcat配置虚拟目录
在tomcatconf下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
接下来添加池配置,如下
!--配置虚拟目录--
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="&; username="root" password="root" maxIdle="30" maxWait="10000" maxActive="100"driverClassName="&&&;//Context
启动服务器,测试,注意因为我们配置了path值为/website,所以访问的路径应该为website.如下图:
方法四:在Web项目中的META-INF目录下新建一个文件context.xml,写入配置
注意:是META-INF目录下,不是WEB-INF目录下
?xml version="1.0" encoding="utf-8"?
ContextResource name="jdbc/mysqlds" auth="Container" type="&; username="root" password="root" maxIdle="30" maxWait="10000" maxActive="100"driverClassName="&&&;logAbandoned="true" //Context
如果觉得《Tomcat数据库连接池的配置方法总结》对你有帮助,请点赞、收藏,并留下你的观点哦!