Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Web应用中数据库的并发访问_Java_Database_Glassfish_Connection Pooling - Fatal编程技术网

Java Web应用中数据库的并发访问

Java Web应用中数据库的并发访问,java,database,glassfish,connection-pooling,Java,Database,Glassfish,Connection Pooling,如何知道Java EE web企业应用程序中同时访问数据库的平均或准确用户数?我想看看我在Glassfish应用服务器中设置的“连接池设置”是否适合我的web应用程序。我需要在Application Server的连接池设置中正确设置最大连接数。最近,当客户端对DB的请求过期时,我的应用程序连接耗尽并抛出异常。有多种方法 一个最简单的方法是向DBA寻求帮助—他们可以准确地告诉您在给定时间有多少连接在Web服务器或连接池的用户id中处于活动状态 如果您想要一些刺激,您必须使用glassfish提供

如何知道Java EE web企业应用程序中同时访问数据库的平均或准确用户数?我想看看我在Glassfish应用服务器中设置的“连接池设置”是否适合我的web应用程序。我需要在Application Server的连接池设置中正确设置最大连接数。最近,当客户端对DB的请求过期时,我的应用程序连接耗尽并抛出异常。

有多种方法

一个最简单的方法是向DBA寻求帮助—他们可以准确地告诉您在给定时间有多少连接在Web服务器或连接池的用户id中处于活动状态

如果您想要一些刺激,您必须使用glassfish提供的JMX管理扩展。上的清单6给出了一个示例,说明如何编写基于JMS的代码段来监视连接池

最后,您必须确保所有连接都由
connection.close()显式关闭应用程序中的调用类型。在某些情况下,还需要关闭ResultSet。

下一步是限制http线程池,以避免在数据库连接需要更长时间才能关闭时出现过多并发访问。

您确定在使用连接后正确关闭了连接吗?在web应用程序中,是的,我正在关闭连接和语句。然而,有时一些人直接访问数据库,我担心他们有时会忘记正确关闭数据库。在DB conf文件中,我看到最大连接数是100。请注意,此web应用程序有多个用户&在连接池中,最大连接数仅设置为4。所以我暂时增加了。我想知道是否有某种方法可以同时监视使用db连接的平均请求数。您确定每个用户都需要数据库连接吗?谢谢您的建议,您提到的链接非常有趣。然而,您提到“在某些情况下,您还需要关闭记录集”,我也从许多专家那里听到了同样的话,我想知道在哪些情况下显式关闭resultset很重要。它们应该以语句结束。您能告诉我吗?嗨-理想情况下,当语句对象关闭时,
ResultSet
将关闭。一些驱动程序供应商没有正确实现该规范。所以关闭两个都是安全的。没有害处。这适用于打开对账单进行其他处理的情况。