spring 多线程调用service 获取不到连接

weixin_38053534 2016-10-05 05:44:40
说明:代码使用spring3+Druid+ibatis;使用spring 自带线程池调用业务层jdbc操作,主要实现从oracle查询数据添加到mysql(没有用愚公,oracle是客户的库 给的账号只有查询数据的权限) 关键代码 1.<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">  <!-- 核心线程数 -->    <property name="corePoolSize" value="${task.core_pool_size}" />  <!-- 最大线程数 -->    <property name="maxPoolSize" value="${task.max_pool_size}" />  <!-- 队列最大长度 -->  <property name="queueCapacity" value="${task.queue_capacity}" />  <!-- 线程池维护线程所允许的空闲时间,默认为60s -->  <property name="keepAliveSeconds" value="${task.keep_alive_seconds}" /> </bean> #------------ Task ------------ task.core_pool_size=5 task.max_pool_size=50 task.queue_capacity=1000 task.keep_alive_seconds=60 2. final NamedParameterJdbcTemplate jdbc =  new NamedParameterJdbcTemplate(dataSourceOracle); taskExecutor.execute(new Runnable() {             public void run() {             aService.batInsert(jdbc);//问题片段             }           }); 3.public void batInsert(NamedParameterJdbcTemplate jdbc) { int rn = 0;     int rownum = 1000;     int size = 1000;     Map<String,Object> param = new HashMap<String, Object>();     param.put("rn", rn);     param.put("rownum", rownum); //spring+ibatis 问题主要部分获取数据源时错误提示信息是已关闭     List<表对应实体> lst = baseDao.queryForList("sqlmapid.listBeanByParam",param);     do{     if(lst != null && lst.size() >0) {     System.out.println("执行[],批量新增["+rn+"]["+rownum+"]");      SqlParameterSource[] pss = SqlParameterSourceUtils.createBatch(lst.toArray());       jdbc.batchUpdate(sql, pss);     rn += size; rownum += size; param.put("rn", rn);     param.put("rownum", rownum);     lst = baseDao.queryForList("sqlmapid.listBeanByParam",param); } }while(lst != null && lst.size() >0); }
...全文
46 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复

476

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧