I suppose that your app use the connections, or you set the <idle-timeout-minutes> to long.
Normaly unused connections are closed after this timeout if not used.
See the wiki http://community.jboss.org/wiki/configdatasources
Does the background validation thread (when enabled) contribute to keeping a connection alive?
I'm not sure, I suppose not because my pool shrink