Based on http://www.javaworld.com/article/2076221/jndi/dive-into-connection-pooling-with-j2ee.html,
rework the JNDI name resolution to rely on connection pools instead of
direct connections.  For JEE, this improves performance dramatically.

In the long run, what I really want is a pool of my database backing store
objects (i.e. the low-level JDBC bindings.)  So instead of sharing the connections
from the pool, you'd share the binding objects from a pool, which enables
the connections retaining a cache of prepared statements.  That will improve
performance by an insane degree under JEE.