Пул подключений - PullRequest
       12

Пул подключений

0 голосов
/ 27 марта 2012

Мы планируем реализовать пул соединений, так как этот механизм кажется правильным для использования, когда соединения с базой данных часто открываются и закрываются. Мы показываем наш код ниже, но нам нужно знать, где мы должны сделать определение пула соединений. Должен ли он быть в самом методе main() или в классе ConnectionHandler? Другое дело: каковы мнения относительно BoneCP ?

public class cServer
{

   class ConnectionHandler implements Runnable {
        ConnectionHandler(Socket receivedSocketConn1) {
          this.receivedSocketConn1=receivedSocketConn1;
        }
   public void run(){
          createConnection();
          processData();
          closeConnection();
       }
    }

    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);
    }

    }

}

Ответы [ 3 ]

4 голосов
/ 27 марта 2012

Я бы рекомендовал использовать существующие решения для пула соединений (например, C3PO). Или используйте встроенные пулы базы данных сервера приложений (все они предоставляют такую ​​возможность).

1 голос
/ 27 марта 2012

Если вы развертываете в контейнере Java EE, используйте пул соединений этого контейнера через JNDI.

Если вы не развертываете в контейнере Java EE, используйте такую ​​библиотеку, как BonePC , DBCP или C3P0 .

1 голос
/ 27 марта 2012

Ну, сам пул не должен находиться в ConnectionHandler, так как он будет потерян, как только ConnectionHandler завершит работу.Тем не менее, ConnectionHandler должен иметь ссылку на пул, чтобы иметь возможность фактически получить соединение с базой данных.Поэтому я бы сказал, сохранить пул в вашем cServer классе, создать его экземпляр в вашем main() и дать каждому ConnectionHandler ссылку на него, когда появится ConnectionHandler.

Я использовали C3P0, и DBCP, но никогда не слышали о Bone CP до сих пор.Это выглядит многообещающе, но это все, что я могу сказать по этому поводу.Вот соответствующий пост , сравнивающий C3P0 и DBCP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...