Bonjour,
J'essaye d'injecter mon contexte de persistance dans mon EntityManager via annotation au sein de mon Web Service JAX-RS :
Voici mon persistence.xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; } }
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).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
Malheureusement j'obtiens un NullPointerException au niveau de la ligne :
Query query = em.createQuery(.....
Donc l'injection n'a pas fonctionné
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.
Partager