@PersistenceContext is null in jboss7
yunshi Sep 14, 2012 10:23 AMHi all,
I am migrating jboss4.2.3 -> jboss7 and I am totally blocked by the probleme that @PersistenceContext always returns me NULL in the EJB jars.
Here are the projects in my deployment :
deployment
-----------------------------
- hibernate-ejb-1.jar
| - src/main/java ... some entities and DAO
| - src/main/resources
| - META-INF
| - hibernate.cfg.xml
| - persistence.xml
- seam2App.ear
| - module1.jar
| - module2.jar
| - war1.war
hibernate-ejb-1.jar offers some DAO functions for my seam2App.ear and other applications. However, in hibernate-ejb-1.jar, all the @PersistenceContext EntityManager returns NULL.
Here is the persistence.xml
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<persistence-unit name="xxx-unit" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/xxxxxDS</jta-data-source>
<properties>
<property name="hibernate.ejb.cfgfile" value="/META-INF/hibernate.cfg.xml"/>
<property name="jboss.entity.manager.factory.jndi.name" value="java:jboss/EntityManagerFactories/xxx"/>
<property name="hibernate.session_factory_name" value="java:jboss/hibernate/SessionFactoryxxx"/>
<property name="jboss.as.jpa.providerModule" value="org.hibernate:3" />
</properties>
</persistence-unit>
</persistence>
In the cosole, I have
12:15:49,752 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-2) JNDI bindings for session bean named xxxDAOImpl in deployment unit deployment "xxxxxxx-SNAPSHOT.jar" are as follows:
java:global/xxxxxx-SNAPSHOT/xxxxxxDAOImpl!com.xxxx.dao.common.remotexxxxxxDAORemote
java:app/xxxxxx-SNAPSHOT/xxxxxxDAOImpl!com.xxxxxx.dao.common.remote.xxxxxxDAORemote
java:module/xxxxxxDAOImpl!com.xxxxxx.dao.common.remote.xxxxxxDAORemote
java:jboss/exported/xxxxxx-SNAPSHOT/xxxxxxDAOImpl!com.xxxxxx.dao.common.remote.xxxxxxDAORemote
java:global/xxxxxx-SNAPSHOT/xxxxxxDAOImpl!com.xxxxxx.dao.common.local.xxxxxxDAOLocal
java:app/xxxxxx-SNAPSHOT/xxxxxxDAOImpl!com.xxxxxx.dao.common.local.xxxxxxDAOLocal
java:module/xxxxxxDAOImpl!com.xxxxxx.dao.common.local.xxxxxxDAOLocal
In other applications who depend on hibernate-ejb-1.jar, I tried to get the Ejb like this:
context = new InitialContext();
DAO dao= (DAO ) context. lookup("java:global/xxxxxx-SNAPSHOT/xxxxxxDAOImpl!com.xxxxxx.dao.common.local.xxxxxxDAOLocal");
DAO.java looks like this
@Stateless
public class DAOImpl implements DAOLocal, DAORemote{
@PersistenceContext
private EntityManager entityManager;
public List<Bean> findAll() {
Query query = createNamedQuery(Bean.FIND_ALL);
if(query!=null)
return query.getResultList();
return null;
}
}
However, I have the NPE because @PersistenceContext EntityManager entityManager is always null.
Could anyone help me plz with an idea or some experiences ?
Thanks very much in advance.