[英]Close SQL connection Java Webservice
我正在用Java編程一個WebService來創建並調用此類:
public class Manager{
private Connection aConnection;
public CacheManager(){
//We get a connection
aConnection = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/mydb?user=root&password=";
}
// Insert a datalist into a table
public void insertIntoDB(List listData, String tableName, StringData previousData)
{
// Some code using database
}
主要問題是在調用Web服務后,連接沒有立即關閉。 這意味着對Web服務的100次調用會創建與數據庫的100條連接。它會導致MySQL錯誤“連接的用戶過多”。如果我等待2分鍾,則對象將被垃圾收集器破壞,並且Web服務將可以再次工作。
有人對如何繞過這個問題有想法嗎?
謝謝!!
我認為您應該維護一個數據庫連接池。 例如,您可以參考C3P0 。 這樣,在初始化類時,可以在構造函數中設置數據庫連接池(例如與數據庫的10個連接)。 在insertIntoDB方法中,首先從連接池獲得一個連接,執行數據庫CRUD操作,最后將連接返回給該池。 這樣,您將永遠不會通過創建多個連接對數據庫施加壓力。 為每個呼叫創建連接也會使其變慢,threr是稱為Connection Thrashing的反模式。
我必須在glassfish上創建一個連接池,然后每次在程序中需要連接時,我都會“獲取”一個連接,然后立即釋放它。 我不再在構造函數中獲得連接,而只是在函數內部。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.