[RESOLVIDO] Como usar o Seam com EJB3

2 respostas
Daniel_Farkas

Olá,

Estou estudando Flex e utilizando o Granite DS para a integração de Java e Flex, e optei pelo Seam para poder usar os escopos de conversação que tanto o GraniteDs fornece do lado cliente e cliente/servidor, porem a dúvida e a seguinte:

Eu não consigo usar um @PersistenceContext em um Pojo Seam, tenho que colocar o @Stateless ou @Stateful e as interface etc… mas ai eu perco todo o contexto o Seam quando eu uso ele como EJB, as anotações @in e @Out não são injetadas, Até o @Logger fica null, como posso usar um Pojo do Seam @Name como EJB sem perder o contexto ?, não utilizo JSF, mas o transporte a camada de view e irrelevante nesse caso, o problema é entre o Seam e a persistência.

Alguém que trabalha com essa tecnologia poderia me passar exemplos.

Obrigado.

2 Respostas

Daniel_Farkas

Consegui fazer funcionar perfeitamente assim:

@Transactional
@Name("produtoService")
@Scope(ScopeType.CONVERSATION)
public class ProdutoService implements IProdutoService {
	
	@In
	private EntityManager entityManager;

        @In
        @Out
        private Produto produto;

        public Produto getProduto(){
              return produto;
        }
         
         // join true pois o cliente flex que inicia a conversação com id especifico
        @Begin(join=true)
        public void beginConversation(){
         // demais implementações...
        }

        @End
        public void endConversation(){     
         // demais implementações....
        }

}

Mas ele só aceita a variável EntityManager com o nome entityManager que esta no contexto do Seam com esse nome.

Funciona perfeitamente, atualizando um objeto no Flex em um escopo de conversação no cliente ele reflete tudo para o banco fazendo merge automaticamente.

Pergunta: estou usando EJB ou só um POJO do Seam ??

Obrigado.

Daniel_Farkas

Consegui colocar o @Stateless ou @Stateful junto a anotação @Name do Seam sem perder todo o contexto do Seam, mudei de versão do JBoss, estava usando a versão 4.2.3.GA e mudei para a versão 6.1.0.Final e agora funciona perfeitamente.

Criado 4 de janeiro de 2012
Ultima resposta 6 de jan. de 2012
Respostas 2
Participantes 1