我的程序适用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时,就连接不上数据库了,虽然可以调整数据库设置,使最大值增加,但这样增加还是早晚会出问题,请问如何解决?