Java Jdbc连接池,按用户名进行连接缓存

Java Jdbc连接池,按用户名进行连接缓存,java,jdbc,Java,Jdbc,我正在使用自动配置的Tomcat池数据源开发基于Spring引导的应用程序。我必须在不同的数据库模式下调用同一个Oracle存储过程(所有数据库模式都有执行授权),而且我事先没有指定用户/密码列表。但我知道程序调用时的凭证。我使用dataSource对象的getConnection(用户,密码)方法来接收连接,它工作正常。但如果我将一个接一个地调用过程三次-对于用户A、用户B和用户A,将调用连接方法reconnect()(对于用户B和用户A的第二次调用)-因为数据源中使用的ConnectionP

我正在使用自动配置的Tomcat池数据源开发基于Spring引导的应用程序。我必须在不同的数据库模式下调用同一个Oracle存储过程(所有数据库模式都有执行授权),而且我事先没有指定用户/密码列表。但我知道程序调用时的凭证。我使用dataSource对象的getConnection(用户,密码)方法来接收连接,它工作正常。但如果我将一个接一个地调用过程三次-对于用户A、用户B和用户A,将调用连接方法reconnect()(对于用户B和用户A的第二次调用)-因为数据源中使用的ConnectionPool对象从空闲队列中弹出相同的连接,检查其用户和密码,并使用新凭据再次连接到数据库。结果,我失去了连接池的所有好处


请告诉我,连接池是否有一些实现,它通过用户名缓存空闲连接?或者可以通过其他方式减少重新连接时间?不幸的是,我无法更改Oracle过程,甚至无法为其实现包装器。

C3P0 ComboPooledDataSource是一个非常好的解决方案。它将连接池存储在地图中,用户|密码密钥

不应按用户名。您是否建议个人使用自己的凭据而不是组id登录到数据库?不幸的是,是的,它是以所述方式实现的。过程更新表中的一些记录,并且还应存储发起此更新的用户的信息