style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

create en JPAController nunca funciona

En un proyecto tengo un JSF con su correspondiente managed bean, en las librerias del proyecto tengo agregado otro proyecto EJB que consta de una clase de entidad generada de una base de datos de manera automatica por netbeans, tambien tengo el JPA Controller generado a partir de esa clase de entidad:

public class EventoJpaController {
    @Resource
    private UserTransaction utx = null;
    InitialContext ctx;
    @PersistenceUnit(unitName = "EventoPU")

    private EntityManagerFactory emf = null;
    public EntityManager getEntityManager() {
        if(emf == null){
   emf = Persistence.createEntityManagerFactory("EventoPU");
  }
        return emf.createEntityManager();
    }

    public void create(Evento evento) throws RollbackFailureException, Exception {
        EntityManager em=null;
        try {
            System.out.println("COMENZANDO");
           
            utx.begin();
            System.out.println("UTX"+ utx.toString());
            em = getEntityManager();
           
            em.persist(evento);
            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();
            }
        }
    }

   ......................................................
}

Quiero usar el metodo create desde el managed bean del JSF de la siguiente forma:

EventoJpaController controller= new EventoJpaController();
        try
        {
            Evento evento= new Evento(anio, mes, dia, ruta, notas);
            controller.create(evento);
           
        }

        catch (Exception e){
            System.out.println("FALLO"+e);
                       
        }

Pero en la ejecucion siempre resulta un null, creo que es culpa del utx en el JPAController

COMENZANDO
FALLO com.model.exceptions.RollbackFailureException: An error occurred attempting to roll back the transaction.

¿Cual es el problema?

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

new

Sospecho que el problema es que creas una nueva instancia con new.

Las anotaciones de @Resource y @PersistenceUnit normalmente funcionan sobre un componente configurado en algun manejador de componentes (el managed bean que mencionas por ejemplo). Si creas una instancia de esa clase con new, no va a tener esos objetos necesarios y por lo tanto no va a poder crear el objeto. Lo raro es que no se arroje NPE sino una RollbackFailureException...

Lo que debes hacer es obtener una referencia al componente administrado en JSF (no manejo JSF así que no sabría decirte cómo hacer eso exactamente).

Creo que es InitialContext

No creo que el managed bean tenga esa funcionalidad. Al parecer se puede lograr con el objeto InitialContext desde el mismo JPAController pero no tengo ni idea como lograrlo.

Am I Lost?

Hi Ya'll!

I am new to this community and just had the urge to introduce myself and say "hi".

For once a solid community with active users that I can read - which is good to look at!

I am here to learn + get involved. How would I best participate?

Peace~

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">