Я хочу использовать объединенные соединения с Java (потому что это дорого стоит создать одно соединение для потока), поэтому я использую объект MysqlConnectionPoolDataSource()
. Я сохраняю свой источник данных по потокам. Итак, я использую только один источник данных для всего приложения:
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);
Теперь, когда я создал свой источник данных, я делаю следующее в каждом отдельном потоке:
PooledConnection connect = dataSource.getPooledConnection();
Connection sqlConnection = connect.getConnection();
Statement state = sqlConnection.createStatement();
ResultSet result = state.executeQuery("select * from someTable");
// Continue processing results
Я предполагаю, что я запутался, это вызов dataSource.getPooledConnection();
Является ли это действительно собиранием объединенного соединения? И этот поток безопасен?
Я заметил, что у PooledConnection есть методы вроде notify() и wait()... что означает, что я не думаю, что это делает то, что я думаю, что он делает...
Также, когда и как я должен освободить соединение?
Мне интересно, было бы выгоднее катиться самостоятельно, потому что тогда я буду более знаком со всем, но я действительно не хочу изобретать колесо в этом случае:).
Спасибо SO