ibatis也能用proxool連接池
在眾多項(xiàng)目中使用過諸多連接池,如DBCP,PROXOOL等,發(fā)現(xiàn)還是proxool連接池好使,因?yàn)閜roxool連接池兼容性好,性能穩(wěn)定。
在某次項(xiàng)目中,由于歷史版本問題,使用了兩個連接池,一個是proxool連接池,一個是IBATIS自由的SIMPLE連接池,但是在連接一個專有數(shù)據(jù)庫時,卻發(fā)現(xiàn)proxool可以創(chuàng)建連接池,而IBATIS的SIMPLE卻不能建立連接(報(bào)經(jīng)典的錯The network apdapter counld‘t estenbilished the connection。。。)。后來將IBATIS改用DBCP,也不行。就想要是IBATIS能用proxool連接池就好了,查看IBATIS文檔,文檔上說IBATIS使用的連接池可以自己制定,由于項(xiàng)目緊,來不急了(等以后有時間了再研究一下),后來想想,能不能用spring把proxool連接池和SIMPLE連接池整合起來,一番搜索后,結(jié)果如下:
1.利用spring將IBATIS和proxool連接池整合起來,使IBATIS輕松使用proxool連接池。
Spring 配置如下:
比較有意思的是SqlMapClientFactoryBean是sqlMapClient的工廠,所以可以直接從spring得到sqlMapClient。
因此只需要將原代碼中從IBATIS構(gòu)造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連接池。
【編輯推薦】