PersistenceContext injection EntityManager NullPointerException
Bonjour,
J'essaye d'injecter mon contexte de persistance dans mon EntityManager via annotation au sein de mon Web Service JAX-RS :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| @Path("/test")
public class TestService {
@PersistenceContext(unitName = "testPU")
private EntityManager em;
@GET
@Produces("application/xml")
public List<Customer> findCustomers() {
Query query = em.createQuery("SELECT c FROM Customer c");
List<Customer> customers = query.getResultList();
return customers;
}
} |
Voici mon persistence.xml :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <?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" version="2.0"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="testPU">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>jdbc/testDS</jta-data-source>
<properties>
<property name="eclipselink.weaving.fetchgroups" value="false" />
<property name="eclipselink.target-database" value="Auto" />
<property name="eclipselink.ddl-generation.output-mode" value="both" />
<property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
</properties>
</persistence-unit>
</persistence> |
Comme vous pouvez le voir, j'utilise une ressource JTA et la data source (jdbc/testDS) est géré par le serveur d'application (GlassFish 3.1.1).
Malheureusement j'obtiens un NullPointerException au niveau de la ligne :
Query query = em.createQuery(.....
Donc l'injection n'a pas fonctionné :cry:
Je précise que lorsque j'utilise le contexte de persistance avec une EJB (@Stateless), l'injection fonctionne. Mais je cherche à le faire sans EJB, sans pour autant devoir déclarer mon data source en local !
Je précise aussi que mes entités et le persistence.xml sont packagés dans un jar et inclus dans le répertoire WEB-INF/lib de mon WAR.
PS : Pour les anglophone, c'est à peu près le même problème qu'ici : http://stackoverflow.com/questions/4...interexception
Merci d'avance.