- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
数据库连接如下所示
public Connection getDBConection(){
Context context = new InitialContext();
DataSource dataSource = (javax.sql.DataSource) context.lookup("java:myDataSource");
Connection conn = dataSource.getConnection();
}
对于用户A,是不是每个数据库请求都应该调用一次getDBConnection()
;但不需要控制所有请求使用相同的连接?
也就是说,如果userA有3个数据库请求,那么userA应该调用3次getDBConnection()
,并且在每次请求使用后调用Connection.closed()
?
如果userA调用了三次getDBConnection()
(即调用了三次dataSource.getConnection()
),是否创建了三个连接?或者它是未知的并由 weblogic 控制?
感觉很乱,难道一个数据库请求就应该新建一个连接吗?或者只需为每个数据库请求调用 DataSource.getConnection()
,创建的新连接数由 Web 服务器控制,无需考虑实际创建了多少连接。
最佳答案
每次调用 DataSource.getConnection
时,数据源都会为您检索一个连接。返回的连接应该没有被其他任何人主动使用,但不一定是全新的连接。
例如,如果您使用连接池,这是一种很常见的做法,那么当您调用 Connection.close
时,连接实际上并没有关闭,而是返回到一个可用的池中连接。然后,当您调用 DataSource.getConnection
时,连接池将查看它周围是否有尚未分发的备用连接。如果是这样,它通常会测试它们是否已经过时(通常通过对虚拟表执行非常快速的查询)。如果没有,它会将现有连接返回给调用者。但是,如果连接已失效,则连接池将从底层数据库驱动程序中检索一个真正新的连接,并将其返回。
通常,连接池有一个最大数量的实际连接,它们将在任何时候保留(例如,50)。如果您的应用程序尝试同时请求超过 50 个连接,DataSource.getConnection
将引发异常。或者在某些实现中,它会阻塞一段时间直到一个可用,然后在该时间到期后抛出异常。有关示例实现,请查看 Apache Commons DBCP .
希望这能回答您的问题!
关于java - 来自用户的每个请求调用一个新的 getConnection()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15161449/
我在 spring 上下文中初始化了数据源 bean。请问应该用什么方式?为什么我就是不能写 dataSource.getConnection()? 最佳答案 有一个重要区别:dataSource.g
如果我使用 DriverManager.getConnection() 和 DataSource.getConnection() 获取连接对象,当 .close() 是在那些对象上调用的? 在 .cl
在 DataSource 接口(interface)上,我发现了两种获取连接的方法,有和没有用户名和密码参数。 Connection getConnection()Connection getConn
我想对这段代码进行单元测试,以验证调用了哪个 DriverManager.getConnection() 。DriverManager.getConnection(url,user,pass) 或 D
我正在使用jsPlumb statemachine 。我想稍后保存并加载我的图表。我用谷歌搜索,发现我必须使用 json 对象来做到这一点。我尝试了几个例子stackoverflow 。我能够获得每个
如何模拟 DriverManager.getConnection() 方法? 我想测试我的方法 setUpConnectiontoDB() 我用 PowerMock、easyMock 和 Mokito
数据库连接如下所示 public Connection getDBConection(){ Context context = new InitialContext(); DataSo
我在 Java 文件中找到了这个方法,我想知道这里发生了什么?这真的有效吗?我认为这个方法什么都不做,因为 getConnection() 方法创建了一个新连接,然后它被关闭了。我说得对吗? publ
我正在尝试从nodejs中的mysql连接池获取连接。但是池的 getConnection 方法不会返回回调函数。 (因此它不会显示任何错误或返回连接)。但我的 mysql 工作台显示已建立连接。当我
我正在使用 MySQL 5.5 及其默认值。我创建了一个用户/密码并运行了一个脚本来创建一个名为员工的数据库。通过命令提示符我可以访问数据库: mysql -u user -p SELECT * FR
我有以下情况:我有一个与数据库 (MySQL) 连接的 java 代码。当我从 eclipse 运行 java 代码并从数据库中获取数据时,一切正常。但是当我从 html 代码运行 java 代码作为
我的工作电脑有一个奇怪的问题,也许你可以解决问题。我目前正在使用 jee 进行开发,我遇到了有关 MySQL DB 的问题。 假设我有这个: for(int i = 0; i<20; i++) { /
我编写了 DAO 类 public List getAllClassRooms() { List classRoomsList = new ArrayList<>(); String
在使用 BoneCP 连接池时,我遇到了以下困惑,并希望听到一些关于这方面的建议: 是 getConnection BoneCP线程安全的方法?当有许多线程请求并行连接时,使用它的最佳方法是什么? 每
最近,我们在Hive连接中添加了SSL。我们通过添加 ssl=1;sslTrustStore=C:\\keytabs\\keys.truststore;trustStorePassword=foo 到
在 SignalR 中,ITransportHeartbeat.GetConnections() 的实现应该会为我提供正在跟踪的连接列表。在我的一个案例中,我总是得到一个不再存在的网络套接字连接。 以
我正在使用jdbc连接池,如果我编写像这样的代码 DatabaseMetaData dbMeta = getConnection().getMetaData(); 其中 getConnection()
我有以下代码来测试新服务器上访问数据库的链接,一切都适用于现有服务器,并且我能够访问该文件夹。 !if.exists 返回 true,我可以使用 Runtime.getRuntime().exec("
我正在使用 Java 和 mysql 作为数据库,但遇到了一个奇怪的问题:我的一位客户的连接非常不稳定,有时丢包率可能很高。好吧,我知道这不是软件的错误,但我去那里进行了测试,当程序调用“Driver
这个问题已经有答案了: Solving a "communications link failure" with JDBC and MySQL [duplicate] (25 个回答) 已关闭 4 年
我是一名优秀的程序员,十分优秀!