Returns a DataSource-ish thing based on a JNDI reference. In the case of a SimpleDataSource or
ConnectionPool, a new instance is created each time, as there is no connection state to maintain.
In the case of a PoolingDataSource, the same DataSource will be returned for every invocation
within the same VM/ClassLoader, so that the state of the connections in the pool will be