Bonjour,
Voilà après presque 3 jours de souffrance, je ne trouve toujours pas de solution, en fait j'ai un projet existant sur NetBeans sur lequel je travaille, j'ai repris ce projet pour ajouter des fonctionnalités avec un plugin qui marche sur Eclipse, contraint de faire une migration vers Eclipse de NetBeans de tout le projet EJB3 (entity + sessionBean), mais avant ça j'ai essayé de faire un exemple sour eclipse avec EJB3 et Hibernate car l'ancien projet a été fait avec Hibernate (je ne sais pas pourquoi), probablement pour piloter le persistance ...moi je ne suis pas douillé dans ce domaine![]()
bref, mon souci c'est qu'avec NetBeans on fait tout avec l'assistant mais sur eclipse c'est manuel, j'ai créé un projet EJB qui s'appelle HelloEJB aussi un projet HelloEJBEAR et HelloEJBCLient en annexe pour tester, jusqu'ici tout va bien, le problème c'est quand je voulais tester les entity avec ma base MySQL, j'ai crée une JNDI sur le serveur GlassFish avec le pool de connexion comme elle était avec netBeans, je l'ai fait la console Admin de glassfish (ça je maitrise bien), maintenant je cherche comment mettre en relation Hibernate (les librairies déjà importées dans mon lib et aussi le lib de glassfish) ?
j'ai crée un fichier persistence.xml et je l'ai mis dans META-INF dont le contenu est :
le code de mes classes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <?xml version="1.0" encoding="UTF-8"?> <persistence version="1.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_1_0.xsd"> <persistence-unit name="Sophia2-ejbPU" transaction-type="JTA"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>JNDI_sophia</jta-data-source> <properties> <property name="hibernate.hbm2ddl.auto" value="update"/> </properties> </persistence-unit> </persistence>
Param.java (entity)
SayHello.java (sessionBean) :
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111 package entities; /* * To change this template, choose Tools | Templates * and open the template in the editor. */ import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Table; /** * * @author greg */ @Entity @NamedQueries({ @NamedQuery(name = "Param.allParams", query = "SELECT p FROM Param p") }) @Table(name="Param") public class Param implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String coordX; private String coordY; private String zoom; private String clef; public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Override public int hashCode() { int hash = 0; hash += (id != null ? id.hashCode() : 0); return hash; } @Override public boolean equals(Object object) { // TODO: Warning - this method won't work in the case the id fields are not set if (!(object instanceof Param)) { return false; } Param other = (Param) object; if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) { return false; } return true; } @Override public String toString() { return "projet.sophia.entityBean.Param[id=" + id + "]"; } public String getCoordX() { return coordX; } public void setCoordX(String coordX) { this.coordX = coordX; } public String getCoordY() { return coordY; } public void setCoordY(String coordY) { this.coordY = coordY; } public String getZoom() { return zoom; } public void setZoom(String zoom) { this.zoom = zoom; } public String getClef() { return clef; } public void setClef(String clef) { this.clef = clef; } }
L'interface ISayHello.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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 package example; import java.util.ArrayList; import java.util.List; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.Query; import entities.Param; @Stateless(name="SayHello", mappedName="ejb/SayHello") public class SayHello implements ISayHello { @PersistenceContext private EntityManager em; @Override public String getMessage() { return "Hello Man"; } @SuppressWarnings("unchecked") public List<Param> allParams(){ List<Param> list_params = new ArrayList<Param>(); try{ Query query = em.createNamedQuery("Param.allParams"); list_params = query.getResultList(); } catch(Exception e){ e.printStackTrace(); } return list_params; } }
SayHelloClient.java (pour tester) :
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 package example; import java.util.List; import javax.ejb.Remote; import entities.Param; @Remote public interface ISayHello { public abstract String getMessage (); public List<Param> allParams(); }
hier j'ai encore testé avec les lignes commentées dans le client est j'ai eu cette erreur :
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 package client; import javax.naming.InitialContext; import example.ISayHello; public class SayHelloClient { public void runTest ()throws Exception{ InitialContext ctx = new InitialContext(); ISayHello bean = (ISayHello) ctx.lookup("ejb/SayHello"); String result = bean.getMessage(); System.out.println(result); System.out.println("Affichage des parametres"); // for (Param item : bean.allParams()){ // System.out.println("KEY "+item.getClef()); // System.out.println("X "+item.getCoordX()); // System.out.println("Y "+item.getCoordY()); // } } public static void main(String[] args) throws Exception { SayHelloClient test = new SayHelloClient (); test.runTest(); } }
mainteant même sans les entity le projet ne marche pas !!!
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 Exception in thread "main" javax.naming.NameNotFoundException: SayHello not found at com.sun.enterprise.naming.TransientContext.doLookup(TransientContext.java:216) at com.sun.enterprise.naming.TransientContext.lookup(TransientContext.java:188) at com.sun.enterprise.naming.TransientContext.lookup(TransientContext.java:192) at com.sun.enterprise.naming.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:74) at com.sun.enterprise.naming.RemoteSerialContextProviderImpl.lookup(RemoteSerialContextProviderImpl.java:129) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:154) at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:687) at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:227) at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1846) at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1706) at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:1088) at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:223) at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:806) at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.dispatch(CorbaMessageMediatorImpl.java:563) at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.doWork(CorbaMessageMediatorImpl.java:2567) at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:555)
j'attends votre retour je suis un peu pressé pour faire cette migration car elle me prends la tête, merci
Remarque : la table Param existe dans ma base mySQL
Partager