2012-12-09 7 views
13

私は最初の接続プールを作成しようとしています。私はTomcat 7とMySQL DBを使ってJava Webアプリケーションを作成しています。可能な限り簡単な接続プールを作成したいと思います。 私はいくつかのチュートリアルを見てきましたが、私にとってはそれほど明確ではないので、うまくいくかどうか確認してください。JavaとTomcat 7の基本的なDB接続プール

私は、接続プール・マネージャとして次のクラスを書いている:

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(); 

を使用して、この接続を閉じて、それはそれだしなければなら理解できますか? また、これを行うためのより簡単な方法がありますか?

ありがとうございました!

答えて

18

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

Tomcatには既に接続プールがあり、confディレクトリのcontext.xmlにコードを設定せずに設定および設定できます。

これで定義されたら、コード内のJNDIデータソースを検索するだけです。そのすべてをハードコーディングして(そしてホイールを再発明する)ことは非常に悪い考えです。マニュアルをチェックアウトするJNDIデータソースを構成する方法については、

http://tomcat.apache.org/tomcat-7.0-doc/jndi-datasource-examples-howto.html

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

dsnameがある
InitialContext cxt = new InitialContext(); 
DataSource ds = (DataSource) cxt.lookup("java:/comp/env/jdbc/dsname"); 

context.xml

+0

DAOはDataSourceを管理*しません。単にそれを使用します。また、JavaEEチュートリアルを参照することもできます。http://docs.oracle.com/javaee/6/tutorial/doc/bncjj.html –

+0

TomcatでJNDIデータソースとして接続プールを構成し、リソースのファクトリ属性'org.apache.tomcat.jdbc.pool.DataSourceFactory'ですが、クラスjavaからデータソースにアクセスする際のDataSource型は何ですか?私は 'org.apache.tomcat.jdbc.pool.DataSource'を使うか、' javax.sql.DataSource'(後者はリソースの 'type'属性の値です)でなければなりません。 – Sefran2

関連する問題