我的程序适用ibatis连接数据库,由于某些项目的原因,无法适用spring管理dao,因此只能自己写代码来创建dao配置文件如下:<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd"><sqlMapConfig>
<properties resource="DB.properties" />
<settings
lazyLoadingEnabled="true"
useStatementNamespaces="false"
cacheModelsEnabled="false"
enhancementEnabled="false"
/>
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="${driver}"/>
<property name="JDBC.ConnectionURL" value="${url}"/>
<property name="JDBC.Username" value="${first}"/>
<property name="JDBC.Password" value="${second}"/>
</dataSource>
</transactionManager> <sqlMap resource="publishReport.xml"/>
</sqlMapConfig>初始化salmap的代码如下:public static synchronized SqlMapClient initSqlMapClient()
{
if(sqlMap == null)
{
try
{
LOGGER.info("开始初始化数据库连接");
String resource = "SqlMapConfig.xml";
Reader reader = Resources.getResourceAsReader(resource);
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
LOGGER.info("数据库连接初始化结束");
}
catch(Exception e)
{
LOGGER.error("数据库初始化失败:" + e.toString());
}
}
return sqlMap;
}
通过日志可以看到程序中的确只有一个sqlMap但是在项目运行之后,发现oracle数据库中
select count(*) from v$process
值增加了很多,而且好像有数据库连接就会增加,但不是每次都增加那么多,但规律没有明确。
个人感觉似乎是我每次执行sqlMap.query或sqlMap.update等的时候就会增加session
不明白这是为什么,select count(*) from v$process值总增加,到了150时,就连接不上数据库了,虽然可以调整数据库设置,使最大值增加,但这样增加还是早晚会出问题,请问如何解决?
<!DOCTYPE sqlMapConfig
PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd"><sqlMapConfig>
<properties resource="DB.properties" />
<settings
lazyLoadingEnabled="true"
useStatementNamespaces="false"
cacheModelsEnabled="false"
enhancementEnabled="false"
/>
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="${driver}"/>
<property name="JDBC.ConnectionURL" value="${url}"/>
<property name="JDBC.Username" value="${first}"/>
<property name="JDBC.Password" value="${second}"/>
</dataSource>
</transactionManager> <sqlMap resource="publishReport.xml"/>
</sqlMapConfig>初始化salmap的代码如下:public static synchronized SqlMapClient initSqlMapClient()
{
if(sqlMap == null)
{
try
{
LOGGER.info("开始初始化数据库连接");
String resource = "SqlMapConfig.xml";
Reader reader = Resources.getResourceAsReader(resource);
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
LOGGER.info("数据库连接初始化结束");
}
catch(Exception e)
{
LOGGER.error("数据库初始化失败:" + e.toString());
}
}
return sqlMap;
}
通过日志可以看到程序中的确只有一个sqlMap但是在项目运行之后,发现oracle数据库中
select count(*) from v$process
值增加了很多,而且好像有数据库连接就会增加,但不是每次都增加那么多,但规律没有明确。
个人感觉似乎是我每次执行sqlMap.query或sqlMap.update等的时候就会增加session
不明白这是为什么,select count(*) from v$process值总增加,到了150时,就连接不上数据库了,虽然可以调整数据库设置,使最大值增加,但这样增加还是早晚会出问题,请问如何解决?
<dataSource type="SIMPLE">
不是已经由ibatis负责连接池了吗