2013-12-04 3 views
0

Вот фрагмент кода с использованием встроенного механизма объединения Tomcat.Использование DriverManager с пулом соединений Tomcat

PoolProperties p = new PoolProperties(); 
p.setUrl("jdbc:mysql://localhost:3306/mysql"); 
p.setDriverClassName("com.mysql.jdbc.Driver"); 
p.setUsername("root"); 
p.setPassword("password"); 
DataSource datasource = new DataSource(); 
datasource.setPoolProperties(p); 
Connection con = null; 
try { 
    con = datasource.getConnection(); 
    Statement st = con.createStatement(); 
    ResultSet rs = st.executeQuery("select * from user"); 
    int cnt = 1; 
    while (rs.next()) { 
     System.out.println((cnt++)+". Host:" +rs.getString("Host")+ 
     " User:"+rs.getString("User")+" Password:"+rs.getString("Password")); 
    } 
    rs.close(); 
    st.close(); 
} finally { 
    if (con!=null) try {con.close();}catch (Exception ignore) {} 
} 

Как бы это сделать, не используя DataSource, но DriverManager?

+0

FYI: источник данных предпочтительнее, но я хотел бы узнать, возможно ли это с помощью DriverManager – John

+0

Почему бы не использовать метод DriverManager.getConnection напрямую? Существует три перегруженных метода. Посмотрите API. Однако у вас не будет преимуществ пула соединений. http://docs.oracle.com/javase/6/docs/api/java/sql/DriverManager.html#getConnection(java.lang.String) –

+0

commons-dbcp имеет пример http: //svn.apache .org/viewvc/commons/proper/dbcp/trunk/doc/PoolingDriverExample.java? view = log (который устарел), но он использует диспетчер драйверов для пулов соединений. – John

ответ

0

Кажется, это невозможно сделать с DriverManager. Фактически, именно поэтому они придумали улучшенный класс DataSource в JDBC 2.0.

Чтобы использовать пул соединений с DriverManager, у нас есть 3 варианта

  1. Напишите свою собственную реализацию. Подробнее here.
  2. Используйте фреймворк/библиотеку, например apache-commons-dbcp. Подробнее here.
  3. Используйте предоставленный контейнер DataSource. Образец here (на основе контейнера tomcat).
Смежные вопросы