Estou tentando utilizar JPA em minha aplicação web mas quando tento obtar o EntityManager utilizando o annotation @PersistenceContext(unitName="default") ele nao funciona (a variável vem nula). Mas se eu utilizar do seguinte modo funciona:
em = jpa.getEMF().createEntityManager();
sendo que o objeto jpa equivale a classe a seguir:
public class JPAResourceBean {
private EntityManagerFactory emf;
/*
* Lazily acquire the EntityManagerFactory and cache it.
*/
public EntityManagerFactory getEMF (){
if (emf == null){
emf = Persistence.createEntityManagerFactory("default", new java.util.HashMap());
}
return emf;
}
}
meu percistence.xml é o seguinte:
<?xml version="1.0" encoding="UTF-8"?>
<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 persistence_1_0.xsd” version=“1.0”>
<persistence-unit name="default" transaction-type="RESOURCE_LOCAL">
<provider>oracle.toplink.essentials.PersistenceProvider</provider>
<class>modelo.pojo.Mensagem</class>
<properties>
<property name="toplink.logging.level" value="FINE"/>
<property name="toplink.jdbc.driver" value="org.postgresql.Driver"/>
<property name="toplink.jdbc.url" value="jdbc:postgresql://localhost:5432/sac?charsetCode=utf8"/>
<property name="toplink.jdbc.user" value="postgres"/>
<property name="toplink.jdbc.password" value="senhateste"/>
</properties>
</persistence-unit>
</persistence>
OBS: nao utilizo EJB.