Tomcatとか使えばこんなの自作する必要ないんですけどね。
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.apache.commons.dbcp.ConnectionFactory;
import org.apache.commons.dbcp.DriverManagerConnectionFactory;
import org.apache.commons.dbcp.PoolableConnectionFactory;
import org.apache.commons.dbcp.PoolingDataSource;
import org.apache.commons.pool.impl.GenericObjectPool;
/**
* DBとのコネクション管理を提供するクラスです
*/
public class DataSourceMng {
/** データソース */
private static PoolingDataSource mySqlDataSource = null;
/** インスタンス */
private static DataSourceMng instance = null;
/**
* 初期化<br>
* データベースとのプーリングを開始します
*/
private static synchronized void init() {
if (instance == null) {
instance = new DataSourceMng();
}
}
/**
* DBとのコネクションを取得します
*
* @return Connection
*/
public static synchronized Connection getConnection() {
try {
if (instance == null) {
init();
}
return mySqlDataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
/**
* ResultSetのclose
*
* @param rs
* ResultSet
*/
public static void close(ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* Statementのclose
*
* @param st
* Statement
*/
public static void close(Statement st) {
if (st != null) {
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* Connectionのclose
*
* @param con
* Connection
*/
public static void close(Connection con) {
if (con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 各種リソースのclose
*
* @param rs
* ResultSet
* @param statement
* Statement
* @param connection
* Connection
*/
public static void close(
ResultSet rs, Statement statement, Connection connection) {
close(rs);
close(statement);
close(connection);
}
/**
* データベースとのコネクションプーリングを生成します
*/
private DataSourceMng() {
try {
Class.forName("com.mysql.jdbc.Driver");
GenericObjectPool pool = new GenericObjectPool();
/* ここは環境に合わせて適宜修正
pool.setMaxActive(100);
pool.setMinIdle(10);
pool.setMaxWait(10);
*/
ConnectionFactory conFactory =
new DriverManagerConnectionFactory(
"url", "db_user_name", "db_user_password");
new PoolableConnectionFactory(
conFactory, pool, null, null, false, true);
mySqlDataSource = new PoolingDataSource(pool);
} catch (Throwable t) {
e.printStackTrace();
}
}
}
0 コメント:
コメントを投稿