--- In jug-indonesia@yahoogroups.com, Endy Muhardin <endy.muhar...@...> wrote:
>
> 2009/6/11 Frans Thamura <fr...@...>:
> >
> >
> > baru kejadian lagi nih openconnection abis ;0
> >
> > ada yg punya ide gimana profile ini masalah
> >
> > sebab session factory di manage oleh spring, jadi gak perlu dispose
> > connection kan
> >
> 
> 
> Pakai database apa?
> Kalo mysql, bisa jalankan show processlist
> Nanti keliatan berapa koneksi yang sedang aktif, masing-masing sudah
> jalan berapa lama, dan melakukan apa.
> 
> Coba lihat deklarasi koneksi database di Springnya ..
> Apakah pakai DriverManagerDataSource (DMDS), atau pakai connection
> pooling semacam c3po atau Apache DBCP?
> 
> Kalo pakai DMDS, mungkin saja terjadi too many connection.
> Soalnya DMDS itu tiap butuh bikin connection baru, setelah selesai disconnect.
> 
> Defaultnya MySQL 100 open connection. Bila masing-masing query butuh
> waktu 5 detik dan dalam 1 detik ada > 30 request, ya pingsan lah
> sebelum detik ke 4.
> 
> -- 
> Endy Muhardin
> http://endy.artivisi.com
> Y! : endymuhardin
> -- life learn contribute --
>

--- contoh sederhana conection pool pakai jdbc 
 sample 1
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.ConnectionPoolDataSource;
import javax.sql.PooledConnection;

public class MainClass {
  public static void main(String[] args) {
    Connection connection = null;
    Statement statement = null;
    ResultSet resultSet = null;

    try {
      connection = getConnection();
      // Do work with connection
      statement = connection.createStatement();
      String selectEmployeesSQL = "SELECT * FROM employees";
      resultSet = statement.executeQuery(selectEmployeesSQL);

      while (resultSet.next()) {
        printEmployee(resultSet);
      }
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      if (resultSet != null) {
        try {
          resultSet.close();
        } catch (SQLException e) {
        } // nothing we can do
      }
      if (statement != null) {
        try {
          statement.close();
        } catch (SQLException e) {
        } // nothing we can do
      }
      if (connection != null) {
        try {
          connection.close();
        } catch (SQLException e) {
        } // nothing we can do
      }
    }
  }

  private static Connection getConnection() throws NamingException, 
SQLException {
    InitialContext initCtx = createContext();
    String jndiName = "HrDS";
    ConnectionPoolDataSource dataSource = (ConnectionPoolDataSource) 
initCtx.lookup(jndiName);
    PooledConnection pooledConnection = dataSource.getPooledConnection();
    return pooledConnection.getConnection(); // Obtain connection from pool
  }

  private static InitialContext createContext() throws NamingException {
    Properties env = new Properties();
    env.put(Context.INITIAL_CONTEXT_FACTORY, 
"com.sun.jndi.rmi.registry.RegistryContextFactory");
    env.put(Context.PROVIDER_URL, "rmi://localhost:1099");
    InitialContext context = new InitialContext(env);
    return context;
  }

  private static void printEmployee(ResultSet resultSet) throws SQLException {
    System.out.print(resultSet.getInt("employee_id")+", ");
    System.out.print(resultSet.getString("last_name")+", ");
    System.out.print(resultSet.getString("first_name")+", ");
    System.out.println(resultSet.getString("email"));
  }

}






Kirim email ke