2012-03-01 52 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

相關問題