Tomcat/Strutsデータソースの設定

Commons DBCPを超えるTomcat JDBC Poolとは (1/2) - @IT
http://www.atmarkit.co.jp/fjava/rensai4/tomcat7_04/01.html

Apache Tomcat 7 (7.0.25) - JNDI Datasource HOW-TO
http://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.html

JUnitで DataSource を使う « 山本隆の開発日誌
http://www.gesource.jp/weblog/?p=69

Tomcat7のlibディレクトリに、MySQL Connector/J を配置して下さい。
mysql-connector-java-5.1.18-bin.jar

struts-config.xmlにデータソースの設定を追加。

☆事前準備
接続先サーバは名前で指定しているため、hostsに以下の記述を追加。
xxx.xxx.xxx.xxx DB_NAME

ClassNotFoundExceptionなどが発生した場合は、
Commons-DBCP/Poolをクラスパスに追加。

☆使い方
Actionクラスのメソッドからは以下の様に接続を取得。

DataSource dataSource = getDataSource(request);
Connection con = dataSource.getConnection();

con.close() は引き続き必要。

Action以外からの利用が必要な場合は、以下の様なメソッドを使って下さい。
※データソース設定が1つしかない前提です。

    public static DataSource getDataSource() throws NamingException {
        Context context = new InitialContext();
        NamingEnumeration<NameClassPair> names = context
                .list("java:comp/env/jdbc");
        if (!names.hasMore()) {
            log.error("データソースの取得に失敗しました。");
            return null;
        }
        NameClassPair pair = names.next();
        String name = pair.getName();
        return (DataSource) context.lookup("java:comp/env/jdbc/" + name);
    }