首页
学习
活动
专区
圈层
工具
发布

连接池
EN

Stack Overflow用户
提问于 2012-03-27 09:52:21
回答 3查看 615关注 0票数 0

我们计划实现连接池,因为当数据库连接频繁打开和关闭时,这似乎是正确的机制。我们显示了下面的代码,但需要知道我们必须在哪里进行连接池定义。它应该在main()方法本身中还是在ConnectionHandler类中?另一件事:关于BoneCP的观点是什么?

代码语言:javascript
复制
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);
    }

    }

}
EN

回答 3

Stack Overflow用户

发布于 2012-03-27 10:07:36

我建议使用现有的连接池解决方案(例如C3PO)。或者使用应用服务器的内置db池(所有它们都提供这样的特征)。

票数 4
EN

Stack Overflow用户

发布于 2012-03-27 10:10:36

池本身不应该驻留在ConnectionHandler中,因为一旦ConnectionHandler结束运行,它就会丢失。尽管如此,ConnectionHandler必须具有对池的引用,以便能够实际获得数据库连接。因此,我建议将池存储在cServer类中,在main()中实例化它,并在生成ConnectionHandler时为每个ConnectionHandler提供对它的引用。

我用过C3P0和DBCP,但直到现在还没有听说过Bone CP。它看起来很有希望,但这就是我所能说的。下面是比较C3P0和DBCP的a related post

票数 1
EN

Stack Overflow用户

发布于 2012-03-27 10:31:34

如果要在Java EE容器中部署,请通过JNDI使用该容器的连接池。

如果不是在Java容器中部署,请使用库,如BonePCDBCPC3P0

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9882360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档