13

最初の接続プールを作成しようとしています。Tomcat 7 と MySQL DB を使用して 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;
    }
}

静的プロパティも同期もわかりません。

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

Connection con = MySQLConnectionPool.getConnection();

最後に、この接続を閉じます

con.close();

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

どうもありがとう!

4

2 に答える 2

18

これは間違ったやり方です。

context.xmlTomcat にはすでに接続プールがあり、confディレクトリ内のコードを使用せずに構成およびセットアップできます。

そこで定義されたら、あとはコードで JNDI DataSource をルックアップするだけです。そのすべてをハードコーディングする (そして車輪を再発明する) ことは、非常に悪い考えです。

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

于 2012-12-09T22:32:46.750 に答える
1

JNDI Datasource HOW-TOTomcat JDBC Connection Pool Tomcat のドキュメントを確認してください。クラスローダーのリークを回避するため、Tomcatに任せることが特に望ましいです。

于 2012-12-09T22:32:37.903 に答える