Вы создаете источник данных в Tomcat или где-то еще, который является пулом соединений.Вы берете соединение из этого пула, а затем освобождаете его, когда закончите.Пример Tomcat (в context.xml):
<Resource auth="Container" driverClassName="com.mysql.jdbc.Driver"
maxActive="100" maxIdle="30" maxWait="10000" name="jdbc/yourname"
password="..." type="javax.sql.DataSource"
url="jdbc:mysql://localhost:3306/mydb?characterEncoding=utf8"
username="..."/>
Это создает пул с именем JNDI 'jdbc / yourname'.Вы можете получить это из Spring следующим образом:
<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/yourname" />
Это создаст объект DataSource, который вы сможете вставить в свой Java-код по мере необходимости.
Или есть множество примеров поиска JNDI нав Интернете это делается программно, а не декларативно.
Существует также множество реализаций пула, таких как c3po.