Sto provando a creare il mio primo pool di connessioni. Sto creando un'applicazione Web Java con Tomcat 7 e un DB MySQL e vorrei creare il pool di connessioni più semplice possibile. Ho dato un'occhiata a diversi tutorial ma non è chiaro per me, quindi mi piacerebbe che tu confermassi se sto andando bene.Pool di connessione DB di base con Java e Tomcat 7
ho scritto la seguente classe come manager pool di connessione:
package dao.mysql;
import java.sql.Connection;
import java.sql.SQLException;
import org.apache.tomcat.jdbc.pool.DataSource;
import org.apache.tomcat.jdbc.pool.PoolProperties;
public class MySQLConnectionPool {
private static DataSource datasource;
private static String driver = "com.mysql.jdbc.Driver";
private static String url = "jdbc:mysql://localhost:3306/mydb";
private static String username = "user";
private static String password = "password";
public MySQLConnectionPool() {
datasource = new DataSource(configurePoolProperties(driver, url, username, password));
}
private PoolProperties configurePoolProperties(String driver, String url, String username, String password) {
PoolProperties properties = new PoolProperties();
properties.setDriverClassName(driver);
properties.setUrl(url);
properties.setUsername(username);
properties.setPassword(password);
return properties;
}
public static synchronized Connection getConnection() {
Connection connection = null;
try {
connection = datasource.getConnection();
} catch (SQLException ex) {
System.out.println("Error while getting a connection from the pool! \nSQL state:" + ex.getSQLState() + "\nMESSAGE" + ex.getMessage());
}
return connection;
}
}
Non sono sicuro circa le statiche proprietà né la sincronizzati.
E non sono sicuro delle classi "client" del pool. Mi sembra di capire che hanno solo per ottenere una connessione utilizzando
Connection con = MySQLConnectionPool.getConnection();
e, infine, chiudere questa connessione utilizzando
con.close();
E questo è tutto? E inoltre, c'è un modo più semplice o migliore per farlo?
Grazie mille!
Un DAO non * gestisce * un DataSource, semplicemente * lo utilizza *. Si potrebbe anche voler leggere il tutorial JavaEE: http://docs.oracle.com/javaee/6/tutorial/doc/bncjj.html –
Se il pool di connessioni è configurato come JNDI DataSource in Tomcat e l'attributo factory della risorsa è 'org.apache.tomcat.jdbc.pool.DataSourceFactory', qual è il tipo DataSource quando si accede all'origine dati da una classe java? Io uso 'org.apache.tomcat.jdbc.pool.DataSource', o dovrebbe essere' javax.sql.DataSource' (quest'ultimo è il valore dell'attributo 'type' della Risorsa)? – Sefran2