如果连接数大于tomcat数据库连接池的最大数目会怎么样

如果连接数大于tomcat数据库连接池的最大数目会怎么样,第1张

如果连接数大于最大数目,后面的连线会失败,无法连接。

不管何种数据库,一般都有定义最大连接数,否则若不限制连接数,会使数据库处理不过来而崩溃。

设置连接数的好处,就是保证已连接用户的正常使用。

当连接数大于最大数目时,后面的连接会无法连接,但已连接上的用户使用不受影响。

只有之前的用户断开连接,后面的用户才可以连接上。相当于在总数不变的情况下,最多只能保持收支平衡,不可以收大于支。

至少9个。

dataSource: 要连接的 datasource (通常我们不会定义在 server.xml)

defaultAutoCommit: 对于事务是否 autoCommit, 默认值为 true

defaultReadOnly: 对于数据库是否只能读取, 默认值为 false

driverClassName:连接数据库所用的 JDBC Driver Class,

maxActive: 可以从对象池中取出的对象最大个数,为0则表示没有限制,默认为8

maxIdle: 最大等待连接中的数量,设 0 为没有限制 (对象池中对象最大个数)

minIdle:对象池中对象最小个数

maxWait: 最大等待秒数, 单位为 ms, 超过时间会丢出错误信息,-1为无限制

password: 登陆数据库所用的密码

Tomcat7.0配置连接池的步骤:

第一步:在Tomcat的配置文件Tomcat7.0\conf\context.xml中添加信息:

<Context>

<Resource

name="jdbc/drp"

type="javax.sql.DataSource"

driverClassName="oracle.jdbc.driver.OracleDriver"

maxIdle="2"

maxWait="5000"

username="drp"

password="drp"

url="jdbc:oracle:thin:@localhost:1521:bjpowernode"

maxActive="4"/>

</Context>

第二步:把配置文件context.xml剪切到webRoot/META-INF中。(若是只有一个项目使用连接池的话,则剪切到使用连接池项目webRoot/META-INF中。若是多个项目都使用连接池,则不进行 *** 作第二步。)

第三步:则在程序中获得连接:

//new DBcP pool

Context ctx=new InitialContext()

//通过JNDI查找DataSource

DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/drp")

conn=ds.getConnection()

其中第一步中的上下文context.xml中的参数的解析如下:

其中的name属性是数据源名称,通常采取jdbc/**.

type属性是数据源方式。

driverClassName属性是驱动程序名称。(此文中是oracle驱动程序)

username,password,数据库名称和密码

url:访问的数据库路径。其中url的内容组成解析上篇博客中已经分析——Oracle安装以及测试Oracle数据库

maxActive属性是并发连接的最大数。设置为0则无限制。

maxWait属性是等待连接的最大连接的时间。

maxIdle属性是连接池中空闲的连接的个数。

上文中的设置的 maxActive="4"说明可以最大连接的个数为4个,再建立连接,则出现异常。

而maxIdle="2"说明当关闭数据库时(不是真正的断开连接,而是归还连接池中)连接池中最大可以有空闲的连接数为2个。

若是再有建立连接,此时若连接池中没有空闲的连接,但是又没有达到maxActive并发的最大连接数,则在连接池中建立连接。

ps:有些教材Tomcat配置连接池,需要在Tomcat/lib中加入驱动包ojbc14.jar.但是自己在Tomcat7.0下配置连接池时,没有加入驱动jar包依然运行正常。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6684478.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存