Guilherme Silveira, excelente Curso!
Tenho uma dúvida de como integrar o JDBC DataSource com o CDI, no caso de uma aplicação Web. Pelo que entendi pode existir "apenas um DataSource por aplicação", caso contrário, o proposito de reciclagem de conexões não seria alcançando e pior: o servidor seria sobrecarregado.
Pelo meu entendimento eu teria duas opções para alcançar essa centralização e garantir um único DataSource instanciado por projeto: 1. Criar um Singleton para a classe gerenciadora do Pool; 2. Usar CDI com escopo @ApplicationScoped. Como já utilizo o recurso de CDI e acho uma abordagem elegante para evitar acoplamento e instanciação exagerada, resolvi criar uma classe e um método produtor conforme código abaixo.
@ApplicationScoped
public class JDBCConnectionProducer implements Serializable {
    private static final long serialVersionUID = 1L;
    private DataSource dataSource;
    public JDBCConnectionProducer() {
        inicializarDataSource();
    } 
    @Produces
    @RequestScoped
    public Connection createConnection() {
        return dataSource.getConnection();
    }
    private void inicializarDataSource() {
        JDBCPool pool = new JDBCPool();
        pool.setUrl("jdbc:hsqldb:hsql://localhost/loja-virtual");
        pool.setUser("SA");
        pool.setPassword("");
        dataSource = pool;
    }
// Na invocação ->
   @Inject
   private Connection connection;
Minha duvidas: 1. Estou fazendo essa integração da forma correta? 2. Existe algum jeito ainda mais fácil/indicado para tratar na Web?
Obrigado!