org.hibernate.exception.GenericJDBCException: Could not open connection解决思路 SSH框架

本文介绍了解决Session关闭异常的三种方法:重启服务器、编写健壮的代码和配置数据库连接池。重点介绍了如何在Spring框架中配置数据库连接池,包括加载数据库配置文件、获取数据源、创建SessionFactory等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



网上有很多同样的报错,也有很多的解决方法。具体说来也就三个方法。


(1)重启服务器 这种方法有用,但是下次还是会出现


(2)写出健壮的代码,使用try{}catch{}finally 语句 确保关闭每一个session


(3)配置数据库连接池




网上的数据库连接池都是在tomcat的配置文件下设置的,我们做的项目连接池是在spring里面配置的,是基于SSH框架,有spring来管理hibernate,所以该配置必须卸载spring或者hibernate里面,如下


<!-- step 1 加载数据库配置文件 -->
<span style="white-space:pre">	</span> <bean id="config"
<span style="white-space:pre">		</span>class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<span style="white-space:pre">		</span><property name="locations">
<span style="white-space:pre">			</span><value>classpath:SqlServer.properties</value>
<span style="white-space:pre">		</span></property>
<span style="white-space:pre">	</span> </bean>
<span style="white-space:pre">	</span> 
<span style="white-space:pre">	</span><!-- step 2  获取数据源 dataSource -->
<span style="white-space:pre">	</span><bean id="dataSource" destroy-method="close"
<span style="white-space:pre">		</span>class="org.apache.commons.dbcp.BasicDataSource">
<span style="white-space:pre">		</span><property name="driverClassName"  value="${jdbc.driverClassName}" />
<span style="white-space:pre">		</span><property name="url" value="${jdbc.url}" />
<span style="white-space:pre">		</span><property name="username" value="${jdbc.username}" />
<span style="white-space:pre">		</span><property name="password" value="${jdbc.password}" />
<span style="white-space:pre">		</span><!-- 以下设置不是必须的  2014年8月23日16:56:07  杨稳 添加的注释 -->
<span style="white-space:pre">		</span><!--initialSize: 初始化连接-->  
<span style="white-space:pre">		</span><property name="initialSize" value="10" />
<span style="white-space:pre">		</span><!--maxActive: 最大连接数量-->  
<span style="white-space:pre">		</span><property name="maxActive" value="200" />
<span style="white-space:pre">		</span><!--maxIdle: 最大空闲连接-->  
<span style="white-space:pre">		</span><property name="maxIdle" value="40" />
<span style="white-space:pre">		</span><!--minIdle: 最小空闲连接-->  
<span style="white-space:pre">		</span><property name="minIdle" value="5"/>  
<span style="white-space:pre">		</span><!--maxWait: 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒--> 
<span style="white-space:pre">		</span><property name="maxWait" value="9000" />
<span style="white-space:pre">		</span><!--连接池创建的连接的默认的auto-commit状态-->
<span style="white-space:pre">		</span><property name="defaultAutoCommit" value="true" />
<span style="white-space:pre">		</span><!-- 以上设置不是必须的 -->
<span style="white-space:pre">		</span>
<span style="white-space:pre">		</span><!--  <span style="color:#ff0000;">此处为本博客配置 </span>   设置连接池属性  使其自动断开连接 -->
<span style="white-space:pre">		</span><property name="removeAbandoned" value="true" />    <!-- <span style="color:#ff6666;">设置自动断开session链接</span>  -->
<span style="white-space:pre">		</span><property name="removeAbandonedTimeout" value="100" />   <!-- <span style="color:#ff6666;">设置session没有响应自动关闭的时间</span> -->
<span style="white-space:pre">		</span><property name="logAbandoned" value="true" />  <!--  <span style="color:#ff0000;">打印日志</span>  -->
<span style="white-space:pre">		</span>
<span style="white-space:pre">	</span></bean>  
<span style="white-space:pre">	</span>
<span style="white-space:pre">	</span><!-- step 3  根据数据源创建session工厂 --><span style="white-space:pre">	</span> 
<span style="white-space:pre">	</span><bean id="sessionFactory"
<span style="white-space:pre">		</span>class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<span style="white-space:pre">		</span><property name="dataSource" ref="dataSource" />
<span style="white-space:pre">		</span>
<span style="white-space:pre">		</span><!-- 通过包扫描的方式,可以不用每次都添加.hbm.xml文件 -注意这里配置的是.hbm.xml所在的目录 -->
<span style="white-space:pre">		</span><property name="mappingDirectoryLocations">  
            <list>  
                <value>classpath:com/tianmen/entity</value> 
            </list>  
        </property>  
<span style="white-space:pre">		</span>
<span style="white-space:pre">		</span><property name="hibernateProperties">
<span style="white-space:pre">			</span><props>
<span style="white-space:pre">				</span><prop key="hibernate.dialect">${hibernate.dialect}</prop>
<span style="white-space:pre">				</span><prop key="hibernate.show_sql">${hibernate.show_sql}</prop> 
<span style="white-space:pre">				</span><prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
<span style="white-space:pre">			</span></props>
<span style="white-space:pre">		</span></property>
<span style="white-space:pre">	</span></bean>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值