Hello, I am developing a webapp and using iBATIS for the first time. I configured iBATIS to use a JDBC transaction manager and a JNDI datasource, provided by Tomcat+DBCP. When my webapp is deployed, a Servlet executes and initializes iBATIS :
SqlMapClient sqlMap = null; Reader reader = null; try { reader = Resources.getResourceAsReader(configFile); } catch( Exception ex ) { String error = "Could not get Reader for iBATIS config file: " + ex; log.fatal(error); throw new DatabaseException(error); } try { sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader); } catch( Exception ex ) { String error = "Could not create iBATIS SqlMapClient object: " + ex; log.fatal(error); throw new DatabaseException(error); } This initialization is done only once. For each http request, I use the sqlMap object to get a new session, execute select queries (through queryForList method) and close the session. The pattern is like this: SqlMapSession session = sqlMap.openSession(); List list = null; list = (List) session.queryForList("queryId"); session.close(); Although I frequently get the SQLException : java.sql.SQLException: ORA-02391: exceeded simultaneous SESSIONS_PER_USER limit Am I doing something wrong? I am the only user. My Tomcat+DBCP configuration is supposedly ok, as it is the same I used for another application (using Hibernate and same Database Server). It seems to me that iBATIS is somehow not releasing the DB connections. I am using iBATIS 2.3.0 cheers -- Filipe David Manana, [EMAIL PROTECTED] "First they ignore you, then they laugh at you, then they fight you, then you win."