Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package studing.novikov.project;
- import java.sql.*;
- import java.util.concurrent.ArrayBlockingQueue;
- import java.util.concurrent.BlockingQueue;
- import java.util.concurrent.TimeUnit;
- /**
- * Created by user on 16.06.2016.
- */
- public class PoolOfConnections {
- private long timeout=30;
- private int initialCapacity=10;
- private String path="jdbc:mysql://localhost:3306/leon";
- private String user="root";
- private String password="root";
- private BlockingQueue<Connection> pool;
- public PoolOfConnections(long timeout, int initialCapacity, String path, String user, String password) {
- this.timeout = timeout;
- this.initialCapacity = initialCapacity;
- this.path = path;
- this.user = user;
- this.password = password;
- pool = new ArrayBlockingQueue<>(initialCapacity, true);
- }
- public Connection getConnection() throws InterruptedException {
- return pool.poll(timeout, TimeUnit.MILLISECONDS);
- }
- public void returnConnection (Connection connection) throws SQLException {
- connection= normalizeConnection(connection);
- pool.offer(connection);
- }
- public void initPool() throws SQLException {
- for (int i=0; i<initialCapacity; i++ ) {
- Connection connection = DriverManager.getConnection(path, user,password);
- pool.add(connection);
- }
- }
- private Connection normalizeConnection(Connection connection) throws SQLException {
- if (!connection.isClosed()) {
- connection = DriverManager.getConnection(path, user, password);
- }
- if (!connection.getAutoCommit()) {
- connection.setAutoCommit(true);
- }
- return connection;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement