ConnectionPool, JDBC, SQL, ApacheDerby

 
 
 
Сообщения:4
Доброго времени суток, товарищи.

Можете накидать мне толковых ссылок по созданию Connection Pool с базами данных? И вообще информацию, литературу итп, чтобы разобраться в этом...

Пример того, что мне нужно

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

import exception.CouponSystemException;

public class ConnectionPool {

	private Set<Connection> set = new HashSet<>();
	public static final int MAX = 10;
	private static ConnectionPool instance;
	private String url = "jdbc:derby://localhost:1527/coupon_sys_db";
	private boolean poolUp;

	private ConnectionPool() throws SQLException {
		poolUp = true;
		for (int i = 0; i < MAX; i++) {
			set.add(DriverManager.getConnection(url));
		}
	}

	public static ConnectionPool getInstance() throws CouponSystemException {
		if (instance == null) {
			try {
				instance = new ConnectionPool();
			} catch (SQLException e) {
				throw new CouponSystemException("ConnectionPool init failed", e);
			}
		}
		return instance;
	}

	public synchronized Connection getConnection() throws CouponSystemException {
		if (!poolUp) {
			throw new CouponSystemException("getConnection failed - pool is closed");
		}
		while (set.isEmpty()) {
			try {
				wait();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		Iterator<Connection> it = set.iterator();
		Connection con = it.next();
		it.remove();
		return con;
	}

	public synchronized void returnConnection(Connection con) {
		set.add(con);
		notify();
	}

	public synchronized void closeAllConnections() {
		poolUp = false;
		while (set.size() < MAX) {
			try {
				wait();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}

		Iterator<Connection> it = set.iterator();
		while (it.hasNext()) {
			Connection con = it.next();
			try {
				con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			it.remove();
		}
		instance = null;
	}

}
 
 
Сообщения:9745
Вот пример c C3P0.
Изменен:04 дек 2018 18:35
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет