Advertisement
leonidius123

Untitled

Jun 16th, 2016
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.74 KB | None | 0 0
  1. package studing.novikov.project;
  2.  
  3. import java.sql.*;
  4. import java.util.concurrent.ArrayBlockingQueue;
  5. import java.util.concurrent.BlockingQueue;
  6. import java.util.concurrent.TimeUnit;
  7.  
  8. /**
  9. * Created by user on 16.06.2016.
  10. */
  11. public class PoolOfConnections {
  12.  
  13. private long timeout=30;
  14. private int initialCapacity=10;
  15. private String path="jdbc:mysql://localhost:3306/leon";
  16. private String user="root";
  17. private String password="root";
  18. private BlockingQueue<Connection> pool;
  19.  
  20. public PoolOfConnections(long timeout, int initialCapacity, String path, String user, String password) {
  21. this.timeout = timeout;
  22. this.initialCapacity = initialCapacity;
  23. this.path = path;
  24. this.user = user;
  25. this.password = password;
  26. pool = new ArrayBlockingQueue<>(initialCapacity, true);
  27. }
  28.  
  29. public Connection getConnection() throws InterruptedException {
  30. return pool.poll(timeout, TimeUnit.MILLISECONDS);
  31. }
  32.  
  33. public void returnConnection (Connection connection) throws SQLException {
  34. connection= normalizeConnection(connection);
  35. pool.offer(connection);
  36. }
  37.  
  38. public void initPool() throws SQLException {
  39. for (int i=0; i<initialCapacity; i++ ) {
  40. Connection connection = DriverManager.getConnection(path, user,password);
  41. pool.add(connection);
  42. }
  43. }
  44.  
  45. private Connection normalizeConnection(Connection connection) throws SQLException {
  46. if (!connection.isClosed()) {
  47. connection = DriverManager.getConnection(path, user, password);
  48. }
  49. if (!connection.getAutoCommit()) {
  50. connection.setAutoCommit(true);
  51. }
  52. return connection;
  53. }
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement