DBCP连接池:如果程序出现异常…… 请教: 使用DBCP数据库连接池,假如设定最多有100个连接。 1、如果由于程序异常,导致一个连接出错,这个连接会不会自动关闭或者销毁?它会变成什么状态? 2、如果出现100次异常,是不是这个连接池就无法再提供连接了?也就无法再被使用了? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 谢谢。还有一个问题: 如果把dbcp连接池的DataSource注册到spring的JdbcTemplate中。使用过程出现异常的话改如何处理?应该在哪里手动关闭连接,spring是不是已经做好异常关闭处理了。就不用我再手动关闭了?谢谢。 调用时加上try{}catch(){}finally{}在finally里把连接关闭,无论是否异常,连接都应该正常关闭 这个确实在finally里把连接关闭,无论是否异常,连接都应该正常关闭 楼主问的不太清楚 spring的jdbc模板已经把connection封装起来了。xml(把dbcp数据源注册到spring的jdbc模版中):<!-- peaas 数据源 --><bean id="peaasDataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> <property name="url" value="jdbc:oracle:thin:@192.168.1.200:1521:orcl" /> <property name="username" value="peaas" /> <property name="password" value="peaas_dxdgW" /> <property name="defaultReadOnly" value="true" /></bean><!-- 权限 DAO --><bean id="powerDAO" class="tyt.peaas.sf.power.dao.PowerDAO"> <property name="casJDBCTemplate"> <ref bean="casJDBCTemplate" /> </property></bean>代码中使用的时候:/** * 用户登陆 * * @param userCode * 用户登录名 * @param userPassword * 用户登录密码 * * @return 登陆成功返回登陆的 UserBean;失败返回 null */@SuppressWarnings("unchecked")public User login(String userCode, String userPassword) { String sql = "select * from OPERUSER where USER_CODE=? and USER_PWD=?"; final User user = new User(); casJDBCTemplate.query(sql, new Object[] { userCode, userPassword }, new RowCallbackHandler() { public void processRow(ResultSet rs) throws SQLException { user.setUserCode(rs.getString("USER_CODE")); user.setUserName(rs.getString("USER_NAME")); user.setSysPower(rs.getString("SYS_POWER")); user.setUserPwd(rs.getString("USER_PWD")); } }); return user;}不需要处理程序员使用try catch finally来控制。我自己去看spring源码吧…… finally { if (stmt != null) stmt.close(); if (conn != null)conn.close();} glassfish服务器和cas服务器连接问题,心急,无头绪! Could not connect to SMTP host: smtp.163.com, port: 25 web程序中关于iframe请求与页面跳转的问题,求解!急! ajax上传文件问题,在线等.... windchill默认模块有那些? struts中怎样不通过配置文件直接跳转? 求教网页导出excel表格问题! 送分的问题,很简单哦,100分。 页面打印的问题 最后50分(聊天室的分屏问题) servlet派发后的问题 struts2和struts 比较 各位兄弟们帮下忙
谢谢。还有一个问题:
如果把dbcp连接池的DataSource注册到spring的JdbcTemplate中。使用过程出现异常的话改如何处理?应该在哪里手动关闭连接,spring是不是已经做好异常关闭处理了。就不用我再手动关闭了?谢谢。
调用时加上try{}catch(){}finally{}
在finally里把连接关闭,无论是否异常,连接都应该正常关闭
spring的jdbc模板已经把connection封装起来了。xml(把dbcp数据源注册到spring的jdbc模版中):<!-- peaas 数据源 -->
<bean id="peaasDataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@192.168.1.200:1521:orcl" />
<property name="username" value="peaas" />
<property name="password" value="peaas_dxdgW" />
<property name="defaultReadOnly" value="true" />
</bean>
<!-- 权限 DAO -->
<bean id="powerDAO" class="tyt.peaas.sf.power.dao.PowerDAO">
<property name="casJDBCTemplate">
<ref bean="casJDBCTemplate" />
</property>
</bean>
代码中使用的时候:/**
* 用户登陆
*
* @param userCode
* 用户登录名
* @param userPassword
* 用户登录密码
*
* @return 登陆成功返回登陆的 UserBean;失败返回 null
*/
@SuppressWarnings("unchecked")
public User login(String userCode, String userPassword) {
String sql = "select * from OPERUSER where USER_CODE=? and USER_PWD=?"; final User user = new User(); casJDBCTemplate.query(sql, new Object[] { userCode, userPassword },
new RowCallbackHandler() {
public void processRow(ResultSet rs) throws SQLException {
user.setUserCode(rs.getString("USER_CODE"));
user.setUserName(rs.getString("USER_NAME"));
user.setSysPower(rs.getString("SYS_POWER"));
user.setUserPwd(rs.getString("USER_PWD"));
}
}); return user;
}
不需要处理程序员使用try catch finally来控制。我自己去看spring源码吧……
if (stmt != null) stmt.close();
if (conn != null)conn.close();
}