tomcat 数据库连接池 查询过于频繁时导致 数据库连接失败!

tomcat 数据库连接池 查询过于频繁时导致 数据库连接失败!,第1张

数据库连接池的连接被用光了,自然就不能连接了

可以加大最大连接数,还就没了连接用完了要及时关闭,以免占着坑不拉屎,

想那些sql语句复杂的最好简化以减少查询的时间,寻找别的解决方法

给你一段代码,看看对你有没有帮助:

这是我的tomcatde DHCP的配置

<Resource driverClassName="commicrosoftsqlserverjdbcSQLServerDriver" logAbandoned="true" maxActive="20" maxIdle="2" maxWait="5000" name="system" password="sa" removeAbandoned="true" removeAbandonedTimeout="60" type="javaxsqlDataSource"

url="jdbc:sqlserver://127001:1433;DatabaseName=base" username="sa"/>

当中的

logAbandoned="true" removeAbandoned="true" removeAbandonedTimeout="60"就是用来配置数据库断开后自动连接的。

可以最简单的新建一个JSP 页面。然后把你WEB 项目部署到tomcat中。然后启动tomcat。

访问一下那个新建的JSP 。如果没问题的话。就证明你的JDBC 出问题。

我们现在写项目都是用的框架很少去注意后台里的JDBC 。

msql数据库连接:

一、传统方法:

1、本人使用JDBC驱动mysql-connector-java-516-binjar,将此驱动包放到%Tomcat_Home%\common\lib\下,

2、在应用程序中加载此包,右键项目属性->java build path->libraries->external libraries

3、在应用程序中加载驱动,ClassforName("commysqljdbcDriver")newInstance()

4、 用javasqlDriverManager类取得一连conn=DriverManagergetConnection(url);

5、用javasqlStatement接口创建stmt 对象,stmt=conncreateStatement();

或javasqlPreraredStatement接口 pstmt;

6、 用javasqlResultSet接口创建rst对象,rst = stmtexecuteQuery(sql语句);

7、 处理结果集,断开数据库连接。

二、数据池连接技术

1、 将mysql-connector-java-516-binjar,也在%Tomcat_Home%\common\lib\下,

2、 在tomcat中manager中配置数据源名,配置完后内容自动放在conf\serverxml中。

3、 在conf\catalina\localhost\下建你应用程序的xml文件,例wei2xml中,内容为<Context docBase="wei2" path="/wei2">

<ResourceLink global="jdbc/mysql" name="jdbc/mysql" type="javaxsqlDataSource"/>

</Context>

其中jdbc/mysql为配置的JNDI;

下面说下JNDI与DataSource

JNDI java naming directory interface命名和目录接口命名服务来使组件定位到其它组件和资源(数据库资源),JNDI所有名应该以字符串java:comp/env开始;

要定位JDBC资源中,这时就可以编写代码使用JNDI的lookup()方法来定位到这个资源了。

JNDI命名服务有一组将名称与对象联系在一起的绑定。JNDI中的lookup()方法传递一个JNDI参数(java:comp/env/myjdbc,前面java:comp/env是必要的。),返回相应的对象(返回类型为DataSource,若为数据库,则可用DataSource中的getConnection()方法获取数据库连接)

DataSoure 是javaxsqlDataSource类型。

数据库连接池分三步:

1、 指定数据库连接的逻辑名,起名java:comp/env/myjdbc

2、 获取与逻辑名相当的DataSource对象,代码为:

InitialContext ctx = new InitialContext();

DataSource ds = (DataSource)ctxlookup(“java:comp/env/myjdbc”);

3、 由DataSource对象获取Connection对象

Connection con=dsgetConnection();

综上所有步骤:

Connection con;

Private void init(){

Try{

InitialContext ctx = new InitialContext();

DataSource ds = (DataSource)ctxlookup(“java:comp/env/jdbc/mysql”);

Conn = dsgetConnection();

}

Catch(Exception e){

eprintStackTrace();

}

}

这段代码使用连接池技术返回一个Connection对象

以上就是关于tomcat 数据库连接池 查询过于频繁时导致 数据库连接失败!全部的内容,包括:tomcat 数据库连接池 查询过于频繁时导致 数据库连接失败!、tomcat配置连接池当超时怎么在tomcat中配置重新连接数据库、docker下tomcat连不上数据库怎么回事等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/sjk/9509780.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存