NutzCN Logo
问答 关于Daoup关闭数据库连接池问题
发布于 2574天前 作者 taking 1594 次浏览 复制 上一个帖子 下一个帖子
标签:

这个是连接的方法

	public static DaoUp getNewConnect(String dataSource) {
		try {
				SysUrlDao sysUrlDao = Mvcs.ctx().getDefaultIoc().get(SysUrlDao.class,"sysUrlDao");
				SysUrl sysUrl = sysUrlDao.dao().fetch(SysUrl.class,dataSource);
				
				if(sysUrl != null){
					DruidDataSource ds = new DruidDataSource();
					ds.setDriverClassName(sysUrl.getDriver());
					ds.setUrl(sysUrl.getUrlStr());
					ds.setUsername(sysUrl.getUserName());
					ds.setPassword(sysUrl.getPassword());
					ds.getConnection();
					DaoUp daoUp = new DaoUp("") {
					};
					daoUp.setDataSource(ds);
					return daoUp;
				}else {
					return null;
				}
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
			return null;
		}
		
	}

调用的方法(类似的使用)

	public List<Record> getFXXX(@Param("customid") String customid){ 
		DaoUp daoUp = null;
		try {
			if(daoUp == null || daoUp.getDataSource()==null || daoUp.dao() == null){
				daoUp = SysConUtil.getNewConnect("FXSK");  //获取数据库远程连接
			}
			List<Record> fxxxLists = new ArrayList<Record>();
			String sqlStr = "XXXXXXXXXXXXXXXXXXXXXXXXXx";
			Sql sql = Sqls.create(sqlStr);
			sql.setCallback(new SqlCallback() {
				
				@Override
				public Object invoke(Connection conn, ResultSet rs, Sql sql) throws SQLException {
					// TODO Auto-generated method stub
					ResultSetMetaData rsmd = rs.getMetaData();
					int column = rsmd.getColumnCount();
					List<Record> list = new LinkedList<>();
					Record record = null;
					while (rs.next()) {
						record = new Record();
						for (int i = 1; i <= column; i++) {
						record.set(rsmd.getColumnName(i).toLowerCase(), rs.getString(i));					
						}
						list.add(record);
					}
					return list;
				}
			});
			daoUp.dao().execute(sql);	
			fxxxLists = sql.getList(Record.class);
			return fxxxLists;	
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
			return null;
		}finally {
			daoUp.close();
		}
	}

因为需要连接多个数据库的原因(差不多4个),每次用完的话我都有close(),但是不知道什么原因,对数据的连接数一直不断,不停的增加增加,然后就会导致数据库没法用了。

3 回复

那你用SimpleDataSource好啦

这个可以本质上解决这个问题吗?因为是生产上的原因,改动的话,可能。。,又或者说我可不可以保持着4个连接一直不断,用的时候直接调用,现在问题就是明明关掉,但是就是没关掉,这样就不停的在创建新的。

SimpleDataSource就不是连接池, 没有关闭的困扰

添加回复
请先登陆
回到顶部