Caused by :java.net.BindException: Address alreay in use :connect问题的原因,及解决办法
问题场景:发生在执行数据批量四五百条记录入库跑批程序中。具体现象:jdbc连接不上数据库。
·
The Network Adapter could not establish the connection ;nested Caused by :java.net.BindException: Address alreay in use :connect
问题场景:发生在执行数据批量四五百条记录入库跑批程序中
具体现象:jdbc连接不上数据库
解决方法:因根本原因是Spring数据源中使用到的 org.springframework.jdbc.datasource.DriverManagerDataSource 类,作为数据源管理bean,该类不是每次调用执行查询、插入、更新等操作都会创建一个数据库连接connecttion,即每次需要在windows上与远程数据库建立一个tcp 连接,tcp连接是端到端的,这就会导致java代码中使用循环批量插入四五白条记录时,每次都创建一个新的数据库连接每次都会占用操作系统层面的一个本地端口,从而抛出:Caused by: java.net.BindException: Address already in use: connect异常,解决方法:修改spring dataSource bean 改为com.mchange.v2.c3p0.ComboPooledDataSource真正使用到池化技术的C3P0去管理数据库连接即可解决该问题。
更多推荐
所有评论(0)