簡體   English   中英

關閉SQL連接Java Webservice

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM