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



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


(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>



展开阅读全文

没有更多推荐了,返回首页