2012-03-01 88 views
0

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

+0

您确定在使用它们之后正确关闭连接吗? – GriffeyDog 2012-03-01 22:13:53

+0

在Web应用程序中,是的,我正在关闭连接和语句。但是,有时候有些人直接访问数据库,我担心他们有时会忘记正确关闭它们。在DB conf文件中,我看到连接的最大数量是100.请注意,此Web应用程序和连接池中有多个用户,最大连接数仅设置为4。所以我暂时增加了它。我想知道是否有一些方法来监测平均数量。同时使用db连接的请求。 – user981116 2012-03-01 22:19:58

+0

你确定你需要每个用户的数据库连接吗? – perissf 2012-03-03 09:46:18

回答

2

有多种方式。

一个最简单的方法就是从DBA处获得帮助 - 他们可以确切地告诉您在给定时间从Web服务器或连接池的用户标识有多少个连接处于活动状态。

如果您想要一些兴奋点,您将不得不使用glassfish提供的JMX管理扩展。清单6上的this page - 给出了一个如何编写基于JMS的片段来监控连接池的例子。

最后,您必须确保您的应用程序中的所有连接都由connection.close();类型的调用明确关闭。在某些情况下,您还需要关闭ResultSet。 接下来是限制你的http线程池,以避免太多的并发访问,如果你的数据库连接需要更长的时间才能关闭。

+0

感谢您的建议,您提到的链接相当有趣。不过,你提到“在某些情况下,你还需要关闭RecordSet”,而且我也从很多专家那里听到了同样的事情,我想知道在哪些情况下显式关闭结果集非常重要。他们应该关闭声明。你可以让我知道。 – user981116 2012-03-02 21:23:51

+0

嗨 - 理想情况下,当语句对象关闭时,ResultSet会关闭。有些驱动程序供应商没有正确实施该规范。如此安全地关闭两者。它没有伤害。这适用于将您的对帐单打开以进行其他处理的情况。 – 2012-03-02 21:30:37

相关问题