I had a look at the source code (in TxConnectionManager) and as far as I can tell the behaviour is as follows, the connection is released back into the pool:
- if all users of the connection have called close on the connection and the property <track-connection-by-tx> is set to false (if the property is true the connection is held until the tx terminates)
- the transaction has terminated (including any synchronisations)
- a connection error occurred
So it seems the answer to your question is no, merely suspending the tx does not release the connection. But, if you suspend the transaction and close the connection and the property <track-connection-by-tx> is false then the connection will be released.
Suspend *only* works on the thread-to-transaction association. It has no other impact.