In my long post I show the effect of *same code* running with 3 different types of datasource definition in tomee.xml
*First one* is connection pooling with NO XA *Second one* is connection pooling with XA In both cases I set: maxActive=15 maxIdle=5 minIdle=3 In *third case* I have connection pooling with XA but with: maxActive=15 maxIdle absent or =15 minIdle=3 (optional since result is the same) In *first case* the number of connections opened towards mysql is never bigger than 15, even if 300 threads around. And if number of threads is reduced to 0 the number of connections shrinks to 3. As I also said in that post the meaning of minIdle and maxIdle as described in the web pages I have seen is not of great help. But I was happy enough to see the number of connections shrinking if not actively used. In *second case* the pool leaks connections, I could see the number of connections opened towards mysql being even bigger than the number of threads.. apparently not having any meaningful upper limit. In *third case* the number of connections remains limited (<=maxActive), but no shrinking if no workload. All just switching the datasource definition and parameters in tomee.xml My interpretation of the following: MaxActive: "The maximum number of active connections that can be *allocated *from this pool at the same time, or a negative number for no limit." MaxIdle: "The maximum number of connections that can *remain *idle in the pool, without extra ones being released, or a negative number for no limit." MinIdle: "The minimum number of connections that can *remain *idle in the pool, without extra ones being created, or zero to create none." (from http://tomee.apache.org/datasource-config.html) is: MaxActive: "If != -1 then it is the maximum number of connections that can be *allocated *by the pool, meaning that the number of connection between my app and mysql *should never pass this number*" MaxIdle: "If !=-1 it is the number of connections that the pool should keep open even if no workload" MinIdle: "I wish someone could explain me what this is for" (maybe used to decide if idle connections that become invalid should be replaced or not) And in *case one* I have seen the test app behaving according to my expectations just with MinIdle having the efffect I expected from MaxIdle. So yes, I am quite confused. In Websphere I was used to: Maximum connections (never more than this), Minimum connections (never less than this), Unused timeout (time after which a connection can be closed if not used and if at least "Minimum connections" remain around) :) -- View this message in context: http://tomee-openejb.979440.n4.nabble.com/org-apache-openejb-resource-jdbc-dbcp-BasicManagedDataSource-allocating-more-than-MaxActive-connectis-tp4676508p4676558.html Sent from the TomEE Users mailing list archive at Nabble.com.
