Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Release de recursos do EntityManager com o CDI

Nico, boa tarde!

Estou com uma dúvida com o uso do JPA com o CDI. Como e quando o CDI faz liberação dos recursos alocados quando executamos, por exemplo, a criação de um DAO:

    @PostConstruct
    void init() {
        this.dao = new DAO<Autor>(this.em, Autor.class);
    }

No callback para o gerenciador de transação, abrimos e fechamos a mesma

    @Inject
    EntityManager manager;

    @AroundInvoke
    public Object executaTX(InvocationContext contexto) throws Exception {
        manager.getTransaction().begin();

        // Chamar os daos que precisam de um contexto
        Object resultado = contexto.proceed();

        manager.getTransaction().commit();

        return resultado;
    }

Então, pergunto. Quando é que os recursos alocados são liberados no servidor de aplicação (WildFly, TOMCAT, Glassfish,...)? Ou ainda, quando é executado o método close()? Pois ele foi retirado do código.

Desde já, agradeço pela atenção

1 resposta
solução

O EntityManager vive no intervalo de tempo da transação, após concluir sua transação (método @Transaction) os recursos são liberados.