gpt4 book ai didi

tomcat - getConnection() 和 getConnection(String username, String password) 之间的区别

转载 作者:行者123 更新时间:2023-11-28 21:56:50 26 4
gpt4 key购买 nike

在 DataSource 接口(interface)上,我发现了两种获取连接的方法,有和没有用户名和密码参数。

Connection getConnection()Connection getConnection(String username, String password)

声明我想使用从服务器 (tomcat) 公开为 JNDI 资源的连接池,这两种方法有什么区别?

最佳答案

取决于DataSource实现,这两个方法做不同的事情。第一个没有参数,只是获得一个 Connection来自池,配置了 DataSource 时配置的凭据被创建。第二个接受 凭据,将从DataSource 获取连接使用这些凭据打开的,否则它将创建一个新的 Connection使用这些凭据,或者——如果 JDBC 驱动程序支持它——它将采用现有的 Connection并切换凭据(我不确定这是否真的可能)。

不幸的是,JavaDoc (http://docs.oracle.com/javase/7/docs/api/javax/sql/DataSource.html) 并没有真正让您了解为什么一个人可能会调用一个而不是另一个.显而易见的原因是因为您想使用为整个 DataSource 配置的凭据以外的凭据进行连接。 .

默认DataSource Tomcat 将为您配置的是 BasicDataSource来自 Apache commons-dbcp : 此数据源不支持 getConnection(String username, String password)方法。最新版本的 Tomcat 附带 tomcat-pool ,如果您设置 alternateUsernameAllowed="true",它是一个替代的 DataSource 实现,确实支持这个替代机制(尽管当前文档说它不支持)您的 <Resource> 上的属性元素。

Tomcat 池文档:http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html

关于tomcat - getConnection() 和 getConnection(String username, String password) 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10996481/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com