Bonjour, alors voila je viens évoquer un sujet récurrent je pense mais malgré des recherches je n'ai pas trouvé de réponses résolvant mon problème. Ce problème le voici, je développe une application de gestion de contact dans le cadre d'un projet pour ma formation, donc pour commencer je veux développer un EJB utilisant la BD intégrer à JBoss pour faire ma couche de persistance.
Donc voici mon interface :
et son implémentation :
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 package project.services; import java.util.List; import bean.Person; public interface IPersonDAO { public Person add(Person p); public void delete(Person p); public Person update(Person p); public Person get(String id); public List<Person> list(); }
J'essaye donc d'appeler cet eJB pour le tester via du code Java de base que voici :
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 package project.impl; import java.util.List; import javax.ejb.Remote; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.Query; import project.services.IPersonDAO; import bean.Person; @Remote(value = IPersonDAO.class) @Stateless(name = "personDao", description = "DAO of bean person") public class PersonDAO implements IPersonDAO { @PersistenceContext(unitName = "persistenceUnit") EntityManager em; @Override public void delete(Person p) { em.getTransaction().begin(); em.remove(p); em.getTransaction().commit(); } @Override public Person get(String id) { // TODO Auto-generated method stub return null; } @Override public List<Person> list() { em.getTransaction().begin(); Query q = em.createQuery("FROM Person"); em.getTransaction().commit(); return q.getResultList(); } @Override public Person add(Person p) { em.getTransaction().begin(); em.persist(p); em.getTransaction().commit(); return p; } @Override public Person update(Person p) { //TODO return null; } }
et donc la classe TestDAO.java :
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
22 package main.test; import javax.naming.NamingException; public class Main { /** * @param args */ public static void main(String[] args) { TestDAO t; try { t = new TestDAO(); t.testPerson(); } catch (NamingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
Le problème que j'ai est le suivant, je n'arrive pas à récupérer mon objet du côté de mon client et j'ai l'erreur 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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package main.test; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import project.services.IPersonDAO; import bean.Person; public class TestDAO { final Context initial; public TestDAO() throws NamingException { initial = new InitialContext(); } public void testPerson() { Object o; try { o = initial.lookup("personDao/remote"); IPersonDAO pDAO = (IPersonDAO) o; Person p = new Person("Dupont", "Michel", "DUPONT SA", "0202020202", "toto@dupont.fr"); pDAO.add(p); System.out.println(pDAO.list()); } catch (NamingException e) { e.printStackTrace(); } } }
Je ne comprends pas pourquoi cela ne marche pas. Si quelqu'un à une idée je suis disponible pour toute question pour clarifier les choses.
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
22
23
24
25
26
27
28 javax.naming.NameNotFoundException: personDao not bound at org.jnp.server.NamingServer.getBinding(NamingServer.java:771) at org.jnp.server.NamingServer.getBinding(NamingServer.java:779) at org.jnp.server.NamingServer.getObject(NamingServer.java:785) at org.jnp.server.NamingServer.lookup(NamingServer.java:396) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source) at sun.rmi.transport.Transport$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Unknown Source) at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source) at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source) at sun.rmi.server.UnicastRef.invoke(Unknown Source) at org.jnp.server.NamingServer_Stub.lookup(Unknown Source) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:728) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:688) at javax.naming.InitialContext.lookup(Unknown Source) at main.test.TestDAO.testPerson(TestDAO.java:21) at main.test.Main.main(Main.java:14)
Merci de votre aide.
lorizio49
Partager