[quote=Luiz_Gustavo][quote=lavh][quote=Luiz_Gustavo]Deixe explicar melhor… estou disposto, se necessário, a criar uma classe auxiliar para controlar transações (UserTransactions) mas não queria perder a flexibilidade de obter os EJBs por anotação.
[/quote]
Não sei se entendi direito, mas anotando o seu bean com:
@TransactionManagement(TransactionManagementType.BEAN)
a responsabilidade de controlar a transação passa a ser sua, e dai vc pode usar o UserTransaction para cotnrolar as suas transações.
Mas vale lembrar que o recomendado é deixar o container controlar as transações pra vc…[/quote]
HUmmmmm… acho que o caminho do que eu preciso é esse aí (pelo menos o que eu consigo ver até agora).
Estou usando EJB há pouco tempo, por isso ainda não consegui definir a melhor estratégia.
É que queremos controlar o início e o término das transações no managedBean, pois uma operação pode envolver vários EJBs, e não queremos cada um deles com uma transação isolada.
Vi neste link (http://java.sys-con.com/read/325149.htm) que essa anotação que você citou é possível, mas ainda não li toda a matéria pra saber se funcionaria como estou pensando: anotar o Beans dessa maneira, e controlar a transação diretamente, abrindo e fechando no managedBean.
Uma opção seria criar EJBs de acordo com os casos de uso, com cada ums abendo quando começar e terminar uma transação.
De qualquer maneira, obrigado pela informação. Vou ler mais a respeito.
Abraços![/quote]
Se você anotar seus métodos com:
@TransactionAttribute(REQUIRED)
não será criada uma transação para cada EJB, e sim todos os EJBs vão usar a mesma transação. O REQUIRED apenas cria uma nova transação se não existir nenhuma.
Quem cria uma nova transação a cada chamada é o REQUIRES_NEW.
Mas como não conheço sua aplicação e tbm não conheço JSF não sei dizer se apenas isso seria suficiente pra resolver o seu problema ou se realmente controlar transações manualmente é o melhor caminho.
[]'s