【问题标题】:Connection Pooling for My Custom Application我的自定义应用程序的连接池
【发布时间】:2011-05-19 05:00:27
【问题描述】:

在我的项目中,我有一个服务器应用程序和一个客户端应用程序以及一个中介应用程序。客户端通过中介应用程序与服务器通信。中介应用程序反过来连接到服务器应用程序。

对于每个客户端,它都需要连接到服务器应用程序。我知道对于每个客户端请求,打开一个新连接都是昂贵的。我想我可以利用连接池的概念。如何在java中实现这一点。任何指针表示赞赏...

感谢和问候,

晴天。

【问题讨论】:

    标签: java connection client-server connection-pooling


    【解决方案1】:

    使用对象池化 api,例如 Apache Commons Pool 来实现您自己的池化机制,或使用现有且功能丰富的缓存解决方案,例如 Ehcache

    【讨论】:

      【解决方案2】:

      请仔细阅读此文档,有价值的信息 connection pooling

      【讨论】:

        【解决方案3】:

        这可以通过在java.util.concurrent 包中使用ExecutorService 来实现。 Executors 是一种工厂方法,它为线程池提供固定数量的线程或受可用内存限制的线程池大小的实现。

        根据个人经验,由于销毁和创建线程的开销,固定大小的线程池比缓存线程池更可靠。

        【讨论】:

        • 出于好奇,线程池如何帮助连接池?
        • 我看过这个例子。连接池在哪里?我认为您将线程池的概念与连接池混淆了。线程池在请求时执行任务;另一方面,连接池是与资源的物理连接池,可以重复使用而无需拆除和重新创建连接(这很昂贵)。
        • 嗯——这是缺乏概念性想法与原始术语不同的地方。下面的连接池是使用某种线程池实现的——其中线程的数量限制了与数据库或服务器的连接。为了进一步帮助 - 尝试实现一个小的连接很酷。这是 Neil Gater 的困惑 - gafter.blogspot.com/2006/11/thread-pool-puzzler.html
        • 我认为您不知道连接池是如何实现的。它们不使用线程池,尤其是在 JDBC 的情况下。检查任何 JDBC 驱动程序的实现,特别是实现和使用 PooledConnection 接口的类。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-27
        • 2016-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多