gpt4 book ai didi

java - 在生产中使用公共(public)池的技巧

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:16:55 24 4
gpt4 key购买 nike

根据我得到的答案here ,我开始给commons-pool一副严肃的样子。我最后一次使用它是在 2003 年左右,可能是 1.1 或 1.2 版本。它的主要用户,DBCP , 被许多人认为是有缺陷的,应该避免。

有没有人在生产中使用公共(public)池来编写你自己的池?最好使用的泳池类型是什么?我计划在其中存储客户端 TCP 套接字。

是否有另一个通用池可以替代它?

最佳答案

Does anyone uses commons pool in production to write pool of your own?

是的,我这样做了,并且池中包含 TCP 连接,就像您希望的那样。它是通过 Spring 连接起来的,因此假设您了解 Spring 配置:

<bean class="com.company.ConnectionSupplier">
<constructor-arg>
<!-- The ConnectionSupplier wraps an object pool -->
<bean class="org.apache.commons.pool.impl.GenericObjectPool">
<constructor-arg>
<!-- The ObjectPool uses a ConnectionFactory to build new connections -->
<bean class="com.company.ConnectionFactory">
<constructor-arg value="server" />
<constructor-arg value="3000" />
</bean>
</constructor-arg>
<property name="maxActive" value="20" />
<property name="testOnBorrow" value="true" />
</bean>
</constructor-arg>
</bean>

ConnectionFactory 扩展了 BasePoolableObjectFactory 并且是 SocketFactory 的一个小包装器。

@第一条评论:ConnectionFactory 构造函数采用服务器和端口。在覆盖的 makeObject() 中,它创建连接到该服务器和端口的套接字。它返回“连接”对象,这些对象使用一些方便的方法包装创建的套接字,以便通过套接字进行通信。

使用用于通过套接字进行通信的协议(protocol)提供的一种“ping”或“echo”来测试连接。如果它不可用,那么除了询问套接字是否已关闭外,连接的验证/测试实际上是不可能的。在这种情况下,如果池中的连接抛出异常,那么它就会失效,并且每个使用连接的方法都应该为这种失败做好准备,并尝试对另一个连接执行相同的操作。

关于java - 在生产中使用公共(public)池的技巧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/939734/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com