Bonjour,

J'ai la classe DAOTester suivante:

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
...



public class DAOTester {


	public static void main(String[] args) {


		EntityManagerFactory factory = Persistence.createEntityManagerFactory("myPU");
		EntityManager em = factory.createEntityManager();
		em.find(Eleve.class, 1);
		
	}


}
et le fichier persistence.xml suivant:

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
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
	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_2_0.xsd">


	<persistence-unit name="myPU" transaction-type="JTA">
		<!-- <jta-data-source>java:jboss/datasources/myDS</jta-data-source> -->
		<jta-data-source>jdbc/myDS</jta-data-source>


		<class>ch.myapp.bean.entity.Book</class>
		<class>ch.myapp.bean.entity.Cours</class>
		<class>ch.myapp.bean.entity.Eleve</class>
		<class>ch.myapp.bean.entity.Publisher</class>
	</persistence-unit>
</persistence>
Lorsque je teste ma classe, j'ai l'erreur suivante :

[EL Severe]: ejb: 2018-02-11 15:13:14.07--ServerSession(342597804)--Exception [EclipseLink-7060] (Eclipse Persistence Services - 2.6.1.v20150605-31e8258): org.eclipse.persistence.exceptions.ValidationException
Exception Description: Cannot acquire data source [jdbc/myDS].
Internal Exception: javax.naming.NamingException: Lookup failed for 'jdbc/myDS' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.url.pkgs=com.sun.enterprise.naming, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl} [Root exception is javax.naming.NamingException: Unable to acquire SerialContextProvider for SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.url.pkgs=com.sun.enterprise.naming, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl} [Root exception is java.lang.NullPointerException]]
Exception in thread "main" javax.persistence.PersistenceException: Exception [EclipseLink-7060] (Eclipse Persistence Services - 2.6.1.v20150605-31e8258): org.eclipse.persistence.exceptions.ValidationException
Exception Description: Cannot acquire data source [jdbc/myDS].
Internal Exception: javax.naming.NamingException: Lookup failed for 'jdbc/myDS' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.url.pkgs=com.sun.enterprise.naming, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl} [Root exception is javax.naming.NamingException: Unable to acquire SerialContextProvider for SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.url.pkgs=com.sun.enterprise.naming, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl} [Root exception is java.lang.NullPointerException]]
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:815)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getAbstractSession(EntityManagerFactoryDelegate.java:205)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:305)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:337)
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:303)
at ch.myapp.test.datasource.DAOTester.main(DAOTester.java:22)
Caused by: Exception [EclipseLink-7060] (Eclipse Persistence Services - 2.6.1.v20150605-31e8258): org.eclipse.persistence.exceptions.ValidationException
Exception Description: Cannot acquire data source [jdbc/myDS].
Internal Exception: javax.naming.NamingException: Lookup failed for 'jdbc/myDS' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.url.pkgs=com.sun.enterprise.naming, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl} [Root exception is javax.naming.NamingException: Unable to acquire SerialContextProvider for SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.url.pkgs=com.sun.enterprise.naming, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl} [Root exception is j
...


Mon application est parfaitement déployée sur glassfish 4. Lorsque je teste mon bean depuis une classe de test, pas de problème, j'accède à mes données:

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
@Stateless
@LocalBean
public class MySessionBean implements MySessionBeanRemote, MySessionBeanLocal, Serializable {


	private EleveDAO dao;


	@PersistenceContext(unitName = "myPU")
	private EntityManager em;


	public Book findBookById(int id) {
		Book b = em.find(Book.class, id);
		return b;
}
Par contre, si j'essaye d'accéder à mon implémentation du DAO depuis le bean, cela ne fonctionne pas et j'ai l'erreur qui s'affiche.

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

public class EleveDaoImpl implements EleveDAO {
	
@PersistenceContext(unitName = "myPU")
	private EntityManager em;


	
@Override
public Eleve findById(int id) throws DAOException {
	
	Eleve e = em.find(Eleve.class, id);
	em.close();
return e;


}
Auriez-vous une piste à me proposer ?

merci