您的位置:首页 > 数据库 > MySQL

应用访问Mysql遇到的连接问题

2010-04-20 17:14 351 查看
最近在做一个小项目,开发环境:数据库mysql5.0,服务器Tomcat5.5。项目打成war部署在tomcat上之后,通过应用进行查询操作,如果操作过于频繁,后台会抛如下异常:

javax.servlet.ServletException: Hibernate operation: Cannot open connection; uncategorized SQLException for SQL [???]; SQL state [08S01]; error code [0]; Communications link failure due to underlying exception:
 
** BEGIN NESTED EXCEPTION **
 
java.net.SocketException
MESSAGE: java.net.BindException: Address already in use: connect
 
STACKTRACE:
 
java.net.SocketException: java.net.BindException: Address already in use: connect
        at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156)
        at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:284)
        at com.mysql.jdbc.Connection.createNewIO(Connection.java:2569)
        at com.mysql.jdbc.Connection.<init>(Connection.java:1485)
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
        at java.sql.DriverManager.getConnection(Unknown Source)
        at java.sql.DriverManager.getConnection(Unknown Source)
        at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:291)
    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:277

。。。。。。

在网上查了很多资料,也在论坛里发帖提问,发现是连接数占用的问题。应用里连接采用的是JDBC直连,后来改成了通过缓冲池连接。

换成缓冲池连接的时候,程序打包要注意,程序lib下的naming-factory.jar,naming-factory-dbcp.jar,naming-resources.jar都要删掉,mysql的连接jar包也要删掉,之后再打包。同时还要注意,tomcat的common lib下要有mysql连接的jar包。然后再部署程序,启动,就ok了。

究其原因,是全局和局部的问题。配置缓冲池连接这种方式,需要全局(tomcat的lib下有相关的jar包);如果采用jdbc直连,就需要程序的war包里有上述那几个jar包。

记录在此,以备后用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息