Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Criar Varios SessionBeans

Baixei o projeto do curso e importei no eclipse, a classe AutorDao ficou assim:

package br.com.caelum.livraria.dao;

import java.util.List;

import javax.annotation.PostConstruct;
import javax.ejb.Stateless;
import javax.inject.Inject;

import br.com.caelum.livraria.modelo.Autor;

@Stateless
public class AutorDao {

    @Inject
    private Banco banco;

    public void salva(Autor autor) {
        this.banco.save(autor);
    }

    @PostConstruct
    void aposCriacao() {
        System.out.println("Autor foi Criado!");
    }

    public List<Autor> todosAutores() {
        return this.banco.listaAutores();
    }

    public Autor buscaPelaId(Integer autorId) {
        Autor autor = this.banco.buscaPelaId(autorId);
        return autor;
    }

}

A classe AutorBean ficou assim:


package br.com.caelum.livraria.bean;

import java.util.List;

import javax.faces.bean.RequestScoped;
import javax.inject.Inject;
import javax.inject.Named;

import br.com.caelum.livraria.dao.AutorDao;
import br.com.caelum.livraria.modelo.Autor;

@Named
@RequestScoped
public class AutorBean {

    private Autor autor = new Autor();

    @Inject
    private AutorDao dao;

    public Autor getAutor() {
        return this.autor;
    }

    public void cadastra() {
        this.dao.salva(this.autor);
        this.autor = new Autor();
    }

    public List<Autor> getAutores() {
        return this.dao.todosAutores();
    }
}

conforme orientacao do Nico adicionei as anotacoes: @Stateless e @Inject e add o métodos aposCriacao() na classe AutorDao. Porém ao rodar o projeto conforme mostra no video ao trocar de abas "Livros e Autores" no video cria somente um sessionBean, já no meu projeto toda a vez que troco de aba ele cria um sessionBean diferente coforme mostra o console:

18:47:37,745 INFO  [stdout] (default task-12) Autor foi Criado!

18:47:37,930 INFO  [stdout] (default task-14) Autor foi Criado!

18:47:37,942 INFO  [stdout] (default task-16) Autor foi Criado!

18:47:38,114 INFO  [stdout] (default task-18) Autor foi Criado!

18:47:38,328 INFO  [stdout] (default task-20) Autor foi Criado!

18:47:38,568 INFO  [stdout] (default task-22) Autor foi Criado!

18:47:38,665 INFO  [stdout] (default task-25) Autor foi Criado!

18:47:38,674 INFO  [stdout] (default task-26) Autor foi Criado!

18:47:39,219 INFO  [stdout] (default task-28) Autor foi Criado!

18:47:39,524 INFO  [stdout] (default task-30) Autor foi Criado!

18:47:39,536 INFO  [stdout] (default task-32) Autor foi Criado!

18:47:39,724 INFO  [stdout] (default task-34) Autor foi Criado!

18:47:40,054 INFO  [stdout] (default task-36) Autor foi Criado!

18:47:40,390 INFO  [stdout] (default task-38) Autor foi Criado!

no meu ambiente está configura o Java 8 (1.8.0_11) e o servidor de aplicação é o wildfly-8.1.0

sabem me dizer o porque na video aula cria apenas um SessionBean e no meu projeto criar vários conforme troco de aba?

4 respostas
solução!

Oi Bruno

A sua dúvida é discutida no fórum de discussões do JBoss: https://developer.jboss.org/message/881749?_sscc=t

Basicamente no Wildfly decidiram remover o pool de ejbs da configuração padrão do servidor de aplicação, então para você ter o mesmo efeito mostrado no vídeo, você precisa configurar o pool conforme descrito no link.

Obrigado Victor, estava com o mesmo problema. Deu certo aqui.

É somente troca esse parte do código comentado no standlone.xml pela segunda parte

É somente troca esse parte do código comentado no standlone.xml pela segunda parte <!-- <session-bean> <stateful default-access-timeout="5000" cache-ref="simple" passivation-disabled-cache-ref="simple"/> <singleton default-access-timeout="5000"/> </session-bean> <pools> <bean-instance-pools> <strict-max-pool name="slsb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/> <strict-max-pool name="mdb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/> </bean-instance-pools> </pools> --> <!-- Versão para gera somente 1 SessionBeans --> <session-bean> <stateless> <bean-instance-pool-ref pool-name="slsb-strict-max-pool"/> </stateless> <stateful default-access-timeout="5000" cache-ref="simple" passivation-disabled-cache-ref="simple"/> <singleton default-access-timeout="5000"/> </session-bean> <pools> <bean-instance-pools> <strict-max-pool name="slsb-strict-max-pool" max-pool-size="32" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/> <strict-max-pool name="mdb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/> </bean-instance-pools> </pools>