[RESOLVIDO]NullPointer ao tentar criar um EntityManager [JBOSS AS 7 + JPA 2.0 + HIBERNATE 4]

Boa noite, estou quebrando cabeça a algumas horas por conta de um erro chato é que eu acredito não ser muito comum, pois nao achei muito na net a respeito.
Aparentemente é um erro bem primário, mas já me desgastou bastante então resolvi postar aqui.

Se trata de um NullPointerException que está acontecendo quando eu tento criar um novo EntityManager a partir de um EntityManagerFactory.

Olhando seu código, parece que o EntityManagerFactory está nulo, não foi criado corretamente.

Fora que, você tem uma classe BaseDAO que cria o EntityManagerFactory toda hora? Este deve ser criado inicialmente, usado pela aplicação e fechado no final, apenas uma instância. E não deixe isso a cargo dos seus DAOs.

Já que vc esta usando JBoss, não é aconselhavel voce usar o EntityManagerFactory

EntityManagerFactory é uma solução mais pra servlet container ou aplicação desktop.
Para Servidor de aplicações, é aconselhavel voce usar o EntityManger gerenciado pelo JBoss.

Use apenas

@PersistenceContex
private EntityManager em;

o Jboss vai injetar o entityManager pra vc.

Desculpe pelas perguntas cretinas, mas estava acostumado a usar o Websphere 7 trabalhando com o EntityManager da maneira em que eu citei no primeiro post, dae para fazer o projeto de conclusao de curso da Facul, resolvi usar o JBoss por ser mais leve, entretando estou tendo esses probleminhas… ;T

Nao jovem,

use apenas o

@PersistenceContext
private EntityManager em;

depois

public void insert(Entity entity){
em.persist(enity);
}

chama direto o em

E tambem não rolou, vou continuar pesquisando.

Vc configurou um dataSource no teu AS7?
persistence.xml esta tudo correto?

Consegui usar sem problema por aqui.

Qualquer coisa da um grito.

Configurei sim.

Entendi.

Voce esta fazendo deploy de uma aplicação empacotado como ear.

MAS, espero nao estar errado,

JBoss AS7 esta provendo apenas Web Profile Only…

Logo…

não atende sua aplicação.

Apenas war.

Bom… o este erro e decorrente da nao especificação de um transaction-type na configuração do seu persistence.xml

04:20:50,520 ERROR [stderr] (http--127.0.0.1-8080-1)    at org.hibernate.engine.transaction.internal.jta.JtaStatusHelper.getStatus(JtaStatusHelper.java:72)  
04:20:50,530 ERROR [stderr] (http--127.0.0.1-8080-1)    at org.hibernate.engine.transaction.internal.jta.JtaStatusHelper.isActive(JtaStatusHelper.java:114)  
04:20:50,531 ERROR [stderr] (http--127.0.0.1-8080-1)    at org.hibernate.engine.transaction.internal.jta.CMTTransaction.join(CMTTransaction.java:149)  
04:20:50,532 ERROR [stderr] (http--127.0.0.1-8080-1)    at org.hibernate.ejb.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:1200)  
04:20:50,533 ERROR [stderr] (http--127.0.0.1-8080-1)    at 

Sendo assim altere seu persistence.xml
DE:

PARA:

Eu já tinha tentado usar RESOURCE_LOCAL e espeficar os paramentos de conexão do HIBERNATE, e isso gerava um ClassNotFoundException por conta dele nao encontrar o driver MySQL.

A solução, nesse caso foi deixar como RESOURCE_LOCAL e usar Non-jta-data-source, no caso<non-jta-data-source>java:jboss/datasources/XXXXX</non-jta-data-source>;

Assim consegui criar o ENTITYMANAGERFACTORY e o ENTITYMANAGER com sucesso.