Qualcuno usa il comune nella produzione per scrivere il proprio?
Sì, lo faccio e il pool contiene connessioni TCP, come tu hai intenzione di fare. E 'cablato via Primavera, assumendo così si capisce la configurazione Primavera:
<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>
Il ConnectionFactory estende BasePoolableObjectFactory ed è un piccolo involucro attorno a un SocketFactory.
@ Primo commento: Il costruttore ConnectionFactory accetta un server e una porta. Nell'overridato makeObject(), crea i socket che si connettono a quel server e alla porta. Restituisce oggetti 'Connection' che racchiudono il socket creato con alcuni metodi di convenienza per comunicare attraverso il socket.
La connessione viene testata utilizzando una sorta di "ping" o "echo" fornito dal protocollo utilizzato per comunicare tramite socket. Se questo non fosse disponibile, la convalida/verifica della connessione non è realmente possibile, tranne che per chiedere alla presa se è stata chiusa. In tal caso, una connessione nel pool sarebbe stata invalidata se ha generato un'eccezione e ogni metodo che utilizza Connections dovrebbe essere preparato per quel tipo di errore e tentare la stessa operazione con un'altra connessione.
Questo è il primo che ho sentito sul fatto che DBCP sia difettoso ... hai qualcosa di più specifico? – skaffman
@skaffman - per lo più ha perso le connessioni senza un motivo –
Questo è interessante: http://static.springsource.com/projects/tc-server/6.0/admin/radmjdbc.html ... menziona l'inadeguatezza di DBCP. Non molto d'aiuto, però, dato che è closed source. – skaffman