Como instanciar uma UserTransaction

Boa noite… Esta classe é abstrata e por iso nao posso instanciar a mesma. Porem eu tenho uma classe clientejpaController e eu preciso de uma isntancia desse UserTransaction pra me poder adicionar no banco de dados.

Olha o contrutor da classe clietnejpaController:

public ClientesJpaController(UserTransaction utx, EntityManagerFactory emf) {
        this.utx = utx;
        this.emf = emf;
    }

eu to fazendo isso:
EntityManagerFactory emf = Persistence.createEntityManagerFactory("WebApplication2PU");
                EntityManager em = emf.createEntityManager();
                Clientes c = new Clientes();
                c.setNomeCliente("Getulio Vargas");
                c.setEnderecoCliente("Rua tal, 25");

ClientesJpaController cj = new ClientesJpaController(utx, emf);
                cj.create(c);

Agora eu preciso de uma instancia UserTransaction pra poder usar o metodo create da classe (cliente) de controle

Anote o UserTransaction com @Resource

@Resource
private UserTransaction ut;

...
public void persist(){
    ut.begin();
    clienteDAO.persist();
    ut.commit();
}

Se a classe nao fosse abstrata era so fazer isso:
UserTransaction utx = new UserTransaction();

Como faço pra instanciar assim?

Voce pode usar no seu método a classe abstrata, mas quem chama o método deve passar uma instancia concreta. Qual seria o sentido de nao ser assim?

quem for chamar o metodo… deve passar uma isntancia concreta…isso eu sabia… Eu nao to conseguindo é passar uma instancia concreta… da esse erro:
type Exception report

messageInternal Server Error

descriptionThe server encountered an internal error that prevented it from fulfilling this request.

exception

java.lang.annotation.AnnotationFormatError: Duplicate annotation for class: interface javax.validation.constraints.NotNull: @javax.validation.constraints.NotNull(message={javax.validation.constraints.NotNull.message}, groups=[], payload=[]

Entao posta o código que voce faz a instancia. Exemplo:

ClasseAbstrata objeto = new ClasseConcreta();

Você não vai instanciar dessa forma pois você não sabe qual é a classe concreta que implementa a UserTransaction.
Quem sabe instanciar essa classe é a implementação do JTA.

Então você não vai usar a instrução new,
ou você anota sua variável com o @Resource, conforme o colega @Mike já explicou,
ou você pode tentar fazer um lookup pelo JNDI name "java:comp/UserTransaction".
.

infelizmente nao consegui resolver desse modo… eu contornei o problema criando outro construtor e editando o metodo create…

contrutor criado pelo netbeans:
public UsuariosJpaController(UserTransaction utx, EntityManagerFactory emf) {
this.utx = utx;
this.emf = emf;
}

metodo create gerado pelo netbeans:

public void create(Usuarios usuarios) throws RollbackFailureException, Exception {
EntityManager em = null;
try {
utx.begin();
em = getEntityManager();
em.persist(usuarios);
utx.commit();
} catch (Exception ex) {
try {
utx.rollback();
} catch (Exception re) {
throw new RollbackFailureException(“An error occurred attempting to roll back the transaction.”, re);
}
throw ex;
} finally {
if (em != null) {
em.close();
}
}
}

contrutor editado:
public UsuariosJpaController(EntityManagerFactory emf) {
this.emf = emf;
}

metodo editado:

public void addUsuario(Usuarios u) throws RollbackFailureException {
EntityManager em = getEntityManager();

    try {
        em.getTransaction().begin();
        em.persist(u);
        em.getTransaction().commit();
        
    }catch(Exception e){
        out.println("erro dinovo");
        try{
            em.getTransaction().rollback();
        }catch (Exception re) {
            throw new RollbackFailureException("poxa...outro erro.", re);
        }
        
    }
}

eu terei que editar os outros metodos agora: edit, destroy… Eu queria mesmo era conseguir usando do jeito que o netbeans gera,

Sei que já faz um bom tempo que responderam este tópico, mas eu fiz um tópico sobre como utilizar o controle explícito de transações JTA por BMT (Bean Managed Transactions), utiliza o objeto UserTransacition. Segue o link: http://www.tidicas.com.br/?p=319