サーブレット エンジン (この場合は Tomcat) 内で実行される一連のメソッドがあり、接続プールを使用して次のように記述されたデータベースにアクセスします。
// Gets an RSS_Feed.
public static RSS_Feed get(int rssFeedNo) {
ConnectionPool_DB pool = ConnectionPool_DB.getInstance();
Connection connection = pool.getConnection();
PreparedStatement ps = null;
ResultSet rs = null;
String query = ("SELECT * " +
"FROM RSS_Feed " +
"WHERE RSSFeedNo = ?;");
try {
ps = connection.prepareStatement(query);
ps.setInt(1, rssFeedNo);
rs = ps.executeQuery();
if (rs.next()) {
return mapRSSFeed(rs);
}
else {
return null;
}
}
catch(Exception ex) {
logger.error("Error getting RSS_Feed " + rssFeedNo + "\n", ex);
return null;
}
finally {
Database_Utils.closeResultSet(rs);
Database_Utils.closeStatement(ps);
pool.freeConnection(connection);
}
}
このようなメソッドをサーブレット エンジンの外部で呼び出すことはできますか? サーブレット エンジン内ではなく、コマンド ラインから実行されるバッチ プロセスでこれを実行したいと考えています。接続プールを使用せずに単純にクエリを書き直すことができることはわかっていますが、これはプロセスに関係する多くのクエリの 1 つです。
接続プーリングは、Apache Common DBCP を介して実装されます。
ConnectionPool_DB.getInstance();
読む:
private ConnectionPool_DB() {
try {
InitialContext ic = new InitialContext();
dataSource = (DataSource) ic.lookup(PropertiesFile.getProperty("myApp", "DATASOURCE"));
// dataSource = (DataSource) ic.lookup("java:/comp/env/jdbc/myApp");
}
catch(Exception ex) {
logger.error("Error getting a connection pool's datasource\n", ex);
}
}