Quiero usar conexiones agrupadas con Java (porque es costoso crear una conexión por subproceso) así que estoy usando el objeto MysqlConnectionPoolDataSource()
. Persisto mi fuente de datos en los hilos. Por lo tanto, sólo estoy usando una fuente de datos en toda la aplicación como esta:¿Estoy utilizando Java PooledConnections correctamente?
startRegistry(); // creates an RMI registry for MySQL
MysqlConnectionPoolDataSource dataSource = new MysqlConnectionPoolDataSource();
dataSource.setUser("username");
dataSource.setPassword("password");
dataSource.setServerName("serverIP");
dataSource.setPort(3306);
dataSource.setDatabaseName("dbname");
InitialContext context = createContext(); // Creates a context
context.rebind("MySQLDS", dataSource);
Ahora que he creado mi fuente de datos, que estoy haciendo lo siguiente en cada hilo separado:
PooledConnection connect = dataSource.getPooledConnection();
Connection sqlConnection = connect.getConnection();
Statement state = sqlConnection.createStatement();
ResultSet result = state.executeQuery("select * from someTable");
// Continue processing results
supongo lo que me confunde es la llamada al dataSource.getPooledConnection();
¿Esto realmente está buscando una conexión agrupada? ¿Y este hilo es seguro? Me di cuenta de que PooledConnection tiene métodos como notify() y wait() ... lo que significa que no creo que esté haciendo lo que creo que está haciendo ...
Además, ¿cuándo y cómo debo liberar el ¿conexión?
Me pregunto si sería más beneficioso rodar el mío porque entonces estaría más familiarizado con todo, pero realmente no quiero reinventar la rueda en este caso :).
Gracias SO
Todas las clases de Java han notificado y esperan, ya que se heredan de java.lang.Object. Sin embargo, es muy raro usarlos realmente. –
Sí, soy un poco nuevo en Java java ... lo estoy dando un giro – Polaris878
Aquí hay un ejemplo de Apache DBCP: http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/ doc/PoolingDataSourceExample.java?view = co –