有没有人在生产中使用公共池来编写自己的池?
是的,我这样做,并且池保持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>
Run Code Online (Sandbox Code Playgroud)
ConnectionFactory扩展了BasePoolableObjectFactory,是一个围绕SocketFactory的小包装器.
@First comment:ConnectionFactory构造函数接受服务器和端口.在重写的makeObject()中,它创建连接到该服务器和端口的套接字.它返回'Connection'对象,它们使用一些方便的方法来包装创建的套接字,以便通过套接字进行通信.
使用由用于通过套接字进行通信的协议提供的"ping"或"echo"来测试连接.如果没有可用,除了询问套接字是否已关闭之外,不可能对连接进行验证/测试.在这种情况下,如果池中的连接引发异常,并且使用Connections的每个方法都应为此类故障做好准备并尝试与另一个连接进行相同的操作,则池中的连接将失效.
| 归档时间: |
|
| 查看次数: |
13541 次 |
| 最近记录: |