Este código está correto? Conexão com o Banco

Pessoal, criei um datasource no Tomcat e este Bean para conexão, minha dúvida estou utilizando corretamente a idéia de pool?

import java.util.*;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
import javax.servlet.*;

public class DBConnBean
{
   public static Connection getConnection( ServletContext context )
   {
      Connection conn = null;
      try
      {
         String datasource = context.getInitParameter( "datasource" );
         InitialContext ic = new InitialContext();
         DataSource ds = (DataSource)ic.lookup( datasource );

         if ( ds != null )
            conn = ds.getConnection();
         else
         {
            try
            {
               String driverClass = context.getInitParameter( "driverClass" );
               String urlConnection = context.getInitParameter( "urlConnection" );
               String username = context.getInitParameter( "username" );
               String password = context.getInitParameter( "password" );

               DriverManager.registerDriver( (Driver)Class.forName( driverClass ).newInstance() );
               conn = DriverManager.getConnection( urlConnection, username, password );
               
            } catch ( ClassNotFoundException cnfex ) {
               System.out.println("ClassNotFoundException ocorreu ao criar uma conexao" +
                                  " a partir dos parametros iniciais da aplicacao: " + cnfex.getMessage() );
               cnfex.printStackTrace();
            } catch ( IllegalAccessException iaex ) {
               System.out.println("IllegalAccessException ocorreu ao criar uma conexao" +
                                  " a partir dos parametros iniciais da aplicacao: " + iaex.getMessage() );
               iaex.printStackTrace();
            } catch ( InstantiationException iex ) {
               System.out.println("InstantiationException ocorreu ao criar uma conexao" +
                                  " a partir dos parametros iniciais da aplicacao: " + iex.getMessage() );
               iex.printStackTrace();
            }
         }
      } catch (NamingException nex) {
         System.out.println("NamingException ocorreu ao criar uma conexao: " + nex.getMessage() );
         nex.printStackTrace();
      } catch (SQLException sqlex) {
         System.out.println("SQLException ocorreu ao criar uma conexao:" + sqlex.getMessage() );
         sqlex.printStackTrace();
      }
      if (conn == null)
         throw new RuntimeException("Nao foi aberta a conexao com o bando de dados!!!");
      return conn;
   }
}   

Isso nao eh um pool. Eh uma Factory de conexoes. Use um pool de conexoes em conjunto com isso ae :wink:

COMO EU FAÇO?

Ueh, e não tá usando não?