0
ComboPooledDataSource cpds = new ComboPooledDataSource(); 
cpds.setDriverClass( "com.mysql.jdbc.Driver" ); //loads the jdbc driver 

cpds.setJdbcUrl( "jdbc:mysql://localhost:3306/dragon" ); 
cpds.setUser("root"); 
cpds.setPassword("password");
cpds.setMaxPoolSize(50);

ComboPooledDataSourceオブジェクトを構成するために、次のコードを含むJavaファイルを作成しました。このコードは、データベースとのプールされた接続を確立するのに十分ですか?

そうでない場合は、他に何をすべきですか?

また、ここでJNDIを実装する方法を教えてください。

初心者なので説明してください。

4

3 に答える 3

2

最初に...次のような静的メソッドまたは変数を含むクラスで接続を開始するコードを作成します..

        private static ComboPooledDataSource cpds = new ComboPooledDataSource();
        public static void MakePool()
        {
               try 
               {
                 cpds=new ComboPooledDataSource();
                 cpds.setDriverClass("com.mysql.jdbc.Driver");
                 cpds.setJdbcUrl("jdbc:mysql://localhost:3306/att_db");
                 cpds.setUser("root");
                 cpds.setPassword("dragon");
                 cpds.setMaxPoolSize(MaxPoolSize);
                 cpds.setMinPoolSize(MinPoolSize);
                 cpds.setAcquireIncrement(Accomodation);
             } 
             catch (PropertyVetoException ex) 
             {
                 //handle exception...not important.....
              }

}
public static Connection getConnection()
{
           return cpds.getConnection();
}

完了したら、サーバー操作用の別のクラスを作成します....

プールから接続を取得します...

         try{

               con=DatabasePool.getConnection();
               // DatabasePool is the name of the Class made earlier....
               .
               .
               .
               .  // Server operations as u wanted.....
               .
               .
             }
             catch(SQL EXCEPTION HERE)
             {
                  .....
             }
             finally
             {     
               if(con!=null)
               {
                      con.close();      
               }
             }
于 2012-06-16T15:01:00.100 に答える
0

c3p0 を使用して jdbc 接続を管理します。jdni は使用しないでください。jndi を使用する場合は、Web コンテナーで接続を構成する必要があります。トムキャットのような

<Context>   
    <Resource name="jdbc/springflow" auth="Container" 
        type="javax.sql.DataSource"
        maxActive="100" maxIdle="30" maxWait="10000" username="root"
        password="" driverClassName="com.mysql.jdbc.Driver"     
        url="jdbc:mysql://localhost:3306/test" />
</Context>

そして、あなたはのようなjndiを使うことができますcontext.lookup("java:jdbc/springflow").

于 2012-06-12T16:52:12.647 に答える
0

私は JNDI に精通していないので、それについては触れません (おそらく、目標の詳細については別の質問が必要です) が、ComboPooledDataSource が適切に構成されていると思います。

次のようなコードを使用して DataSource をテストできるはずです (簡単にするために例外処理は除外されています)。

ArrayList<Object[]> data = new ArrayList<Object[]>();

Connection connection = cpds.getConnection();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("select a_column from a_table;");

int columnCount = resultSet.getMetaData().getColumnCount();

while (resultSet.next()) {
    Object[] rowData = new Object[columnCount];

    for (int i = 0; i < columnCount; i++) {
        rowData[i] = resultSet.getObject(i + 1);
    }

    data.add(rowData);
}
于 2012-06-12T15:54:46.067 に答える