No, you don't have to use start/commit/end with selects -- but it is faster and will give you more reliable data if you have multiple related selects.
A switch from a throttle increment problem to a connection pool problem is pretty much a guarantee that somewhere in your code a transaction is not being ended. Do a simple string search (or a "Find Usages/References" in a good IDE) for startTransaction and endTransaction, and make sure the counts are identical. Then go through each and make sure that they're always within the try/finally block as below.
Cheers,
Clinton
2009/6/29 María Mora Ramiro
<maria.moraramiro@...>
A couple of months ago, we experimented the same problem.
We upgraded to ibatis 2.3.4 / ibatis dao 2.2.0 as you recommended and the throttle error disappeared. However, we are getting now an error with the connection pool (we use the jboss datasource via ibatis): “there are no more connections available”, it means our application is taking all the connections and remains waiting for the answer.
We have deployed the same code in two different machines, and this error happens only in one of them (the one which receives less requests...). Our support team has told us, requests to database remains waiting. We have checked we are finishing transactions
try {
start transaction
do work
commit transaction
} finally {
end transaction
}
Do we have to do the same with "select" requests to database.
Thanks.
María