2012-03-16 57 views
0

我們計劃在我們的java應用程序中實現連接池。我們谷歌和發現了它的一些如BoneCp,DbPool,Apache,c3p0,DbCp和其他。現在我們發現問題很難做出決定,哪一個適用,有些已經過時。哪種方法是最佳解決方案?Java連接池選項

public class cServer 
{ 
    class ConnectionHandler implements Runnable { 
     ConnectionHandler(Socket receivedSocketConn1) { 
      this.receivedSocketConn1=receivedSocketConn1; 
     } 


     public void run(){ 
      createConnection(); 
      while (read the socket values){ 
       //number of queries to run in terms of select,insert and updates. 
      } 
      closeConnection(); 
     } 
     void createConnection(){ 

     try{ 
     dbconn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test1?"+"user=user1&password=*******"); 
     dbconn.setAutoCommit(false); 
     } 
     catch(Throwable ex){ 
      ex.printStackTrace(System.out); 
     } 
    } 
    } 


    public void main() 
    { 
    try 
    { 
     final ServerSocket serverSocketConn = new ServerSocket(8000);    
     while (true){ 
     try{ 
      Socket socketConn1 = serverSocketConn.accept(); 
      new Thread(new ConnectionHandler(socketConn1)).start();      
     } 
     catch(Exception e){ 
     e.printStackTrace(System.out); 
     } 
     } 
    } 
    catch (Exception e){ 
     e.printStackTrace(System.out); 
    } 

    } 

} 
+0

你需要XA池嗎?這限制了相當多的選擇。 – 2012-03-16 23:21:48

+1

2011年Java JDBC連接池庫選擇可能的重複?(http://stackoverflow.com/questions/5640146/java-jdbc-connection-pool-library-choice-in-2011) – 2012-03-16 23:22:09

+0

@clement你是什麼是由XA池?所以我已經把我的部分代碼。你建議哪種方式? – user837306 2012-03-18 14:27:14

回答

1

首先從連接池中確定需要什麼,然後查找提供該功能的庫。

現在選擇一個,使用網上已發現的流行意見或通過在SO上提出具體問題。

接下來,再次根據您需要從池中創建一個連接池功能的抽象層並使用所選庫實現。

這樣,即使在開發過程中,如果您不滿意,也可以更改底層庫。

+0

我已添加我的代碼片段。它基於每個套接字連接的套接字連接,我將打開一個連接,同時有數據繼續處理它並最終關閉連接。所以我認爲createConnection是我應該調用連接池的權利? – user837306 2012-03-17 18:52:30