Bonjour,

J'essaye d'injecter mon contexte de persistance dans mon EntityManager via annotation au sein de mon Web Service JAX-RS :
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;
    }
}
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
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é

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.