web-dev-qa-db-ja.com

JavaおよびTomcat7を使用する基本的なDB接続プール

最初の接続プールを作成しようとしています。 Tomcat7とMySQLDBを使用してJava Webアプリケーションを作成しています。可能な限り単純な接続プールを作成したいと思います。いくつかのチュートリアルを確認しましたが、そうではありません。本当にはっきりしているので、順調かどうか確認していただきたいと思います。

接続プールマネージャとして次のクラスを作成しました。

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;
    }
}

staticプロパティやsynchronizedについてはよくわかりません。

また、プールの「クライアント」クラスについてはよくわかりません。私は彼らが使用して接続を取得するだけでよいことを理解しています

Connection con = MySQLConnectionPool.getConnection();

最後に、を使用してこの接続を閉じます

con.close();

以上です?また、これを行うためのより簡単またはより良い方法はありますか?

どうもありがとう!

13
MikO

これは間違った方法です。

Tomcatにはすでに接続プールがあり、confディレクトリのcontext.xmlを介してコードなしで構成およびセットアップできます。

そこで定義されたら、コードでJNDIデータソースを検索するだけです。これらすべてをハードコーディングする(そして車輪の再発明を行う)ことは非常に悪い考えです。

JNDI DataSourceの構成方法については、マニュアルを確認してください。 http://Tomcat.Apache.org/Tomcat-7.0-doc/jndi-datasource-examples-howto.html

Tomcatのマニュアルには、プールから接続を取得する方法の例もあります。

InitialContext cxt = new InitialContext();
DataSource ds = (DataSource) cxt.lookup( "Java:/comp/env/jdbc/dsname" );

ここで、dsnameは、context.xmlで指定した名前です。

18

JNDIデータソースHOW-TO および Tomcat JDBC接続プール Tomcatのドキュメントを確認してください。特にクラスローダーのリークを回避するため、Tomcatに任せることをお勧めします。

1