Práticas de pool de conexão JDBC MySql para evitar o pool de conexão esgotado

Eu tenho um aplicativo da Web Java-JSF no GlassFish, no qual desejo usar o pool de conexão. Portanto, eu criei umapplication feijão com escopo que serve comConnection instâncias para outros beans:

public class DatabaseBean {

    private DataSource myDataSource;

    public DatabaseBean() {
        try {
            Context ctx = new InitialContext();
            ecwinsDataSource = (DataSource) ctx.lookup("jdbc/myDataSource");
        } catch (NamingException ex) {
            ex.printStackTrace();
        }
    }

    public Connection getConnection() throws ClassNotFoundException, SQLException, InstantiationException, IllegalAccessException {
        Connection connection = myDataSource.getConnection();
        System.out.println("Succesfully connected: " + connection);
        //Sample: Succesfully connected: com.sun.gjc.spi.jdbc40.ConnectionHolder40@7fb213a5
        return connection;
    }
}

Dessa forma, o pool de conexões é preenchido muito rapidamente; depois de algumas navegação pelas visualizações 'relacionadas ao banco de dados', o aplicativo para com o seguinte:

RAR5117: Falha ao obter / criar conexão do conjunto de conexões [mysql_testPool]. Motivo: as conexões em uso são iguais ao tamanho máximo do pool e ao tempo de espera máximo expirado. Não é possível alocar mais conexões. RAR5114: Erro ao alocar a conexão: [Erro ao alocar uma conexão. Causa: As conexões em uso são iguais ao tamanho máximo do pool e ao tempo de espera máximo expirado. Não é possível alocar mais conexões.] Java.sql.SQLException: erro ao alocar uma conexão. Causa: As conexões em uso são iguais ao tamanho máximo do pool e ao tempo de espera máximo expirado. Não é possível alocar mais conexões.

Estou fechando conexões e outros recursos em todos os métodos. O aplicativo executa tudo bem com conexões independentes.

O que estou fazendo errado? Qualquer dica ou conselho seria apreciado.

questionAnswers(2)

yourAnswerToTheQuestion