Galera, dei uma pesquisada aki no forum e não encontrei nenhuma solução para o problema. Quando persisto um objeto com EntityManager tenho essa Excessão.
A primeira utilizará um DS com transações gerenciadas pela aplicação(RESOURCE_LOCAL), por isso você precisaria de um EntityTransaction para demarcar as transações(lembrando que qualquer método que não seja de consulta do Entity Manager exige que você esteja dentro de uma transação, por isso ocorreu seu erro inicial)…
Já a segunda as transações serão gerenciadas pelo container(JTA) automaticamente, sem precisar demarcar(Você pode customizar com os atributos de transação mas não é requerido…)…
E eu crier uma Servlet que grava dados em uma tabela
public class TestServlet extends HttpServlet {
@PersistenceUnit
private EntityManagerFactory emf;
private void execute(HttpServletRequest request, HttpServletResponse response) throws ServletException{
EntityManager em = emf.createEntityManager();
Usuario usuario = new Usuario("Jose");
em.persist(entity);
em.flush();
}
e eu recebo a reguinte exception
javax.persistence.TransactionRequiredException: no transaction is in progress
at org.hibernate.ejb.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:419)
Desculpe a minha ignorância, mas você poderia me dizer o porque de você criar um EntityManager, sendo que você usa JTA? Por que não usa @PersistenceContext com o EntityManager direto?