在众多项目中使用过诸多连接池,如DBCP,PROXOOL等,发现还是proxool连接池好使,因为proxool连接池兼容性好,性能稳定。
在某次项目中,由于历史版本问题,使用了两个连接池,一个是proxool连接池,一个是IBATIS自由的SIMPLE连接池,但是在连接一个专有数据库时,却发现proxool可以创建连接池,而IBATIS的SIMPLE却不能建立连接(报经典的错The network apdapter counld‘t estenbilished the connection。。。)。后来将IBATIS改用DBCP,也不行。就想要是IBATIS能用proxool连接池就好了,查看IBATIS文档,文档上说IBATIS使用的连接池可以自己制定,由于项目紧,来不急了(等以后有时间了再研究一下),后来想想,能不能用spring把proxool连接池和SIMPLE连接池整合起来,一番搜索后,结果如下:
1.利用spring将IBATIS和proxool连接池整合起来,使IBATIS轻松使用proxool连接池。
Spring 配置如下:
比较有意思的是SqlMapClientFactoryBean是sqlMapClient的工厂,所以可以直接从spring得到sqlMapClient。
因此只需要将原代码中从IBATIS构造sqlMapClient,改为从spring获取即可。
如原代码片段为:
static {
try {
Reader reader = Resources.getResourceAsReader("com/bw/bst/db/SqlMapConfig.xml");
sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
} catch (IOException e) {
// Fail fast.
throw new RuntimeException("Something bad happened while building the SqlMapClient instance." + e, e);
}
}
改为:
static {
ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"},SqlMapUtil.class);
sqlMapper= (SqlMapClient) context.getBean("sqlMapClient");
}
轻松又省力的使IBATIS使用了proxool连接池。
【编辑推荐】