Lors de la persistence des objets dans un context du LOCAL, en dehors du serveur d'application, tout ce dont ont a besoin c'est :
1) L'entity à persister
2) Le fichier de persistance
3) Intégrer le JAR du connecteur du SGBD sollicité (MySQL dans ce cadre)
4) Le méthode qui gère la persistence avec les déclarations des variables :Là ça marche sans problème dans un simple Main Java Pur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 EntityManagerFactory emf = Persistence.createEntityManagerFactory("WebProjet"); EntityManager em = emf.createEntityManager();
Mais, il me semble que Persistance à du Serveur d'application notamment à partir d'une Servlet est particulière et nécessite des configurations supplémentaire puisque je fais la même chose et ça ne marche pas.
Glassfish pointe par défaut défaut sur la Base de Données DERBY et me renvoi l'erreur 1527 disant qu'il ne trouve pas de Data Source, pourtant je travail avec MySQL. Jboss aussi me dit qu'il ne retouve pas de Data Source. Quelqu'un a-t-il une idée ? Ou alors un Tutorial / livre qui détails cet aspect ?
J'ai besoin de quelque chose qui pourra être déployé aussi bien sous Glassfish et que sous JBoss et qui marchera sans problème, je ne veux pas être lié à un Serveur d'application. Je veux travailler avec les config xml et annotations.
Quand vous faites des applications Web J2EE comment gérer vous la persistance, si par exemple vous récupérer des données d'un formulaire et que vous vouliez les passer à un EJB qui les persiste, comment ça se passe généralement ?
EJB DE PERSISTANCE
EJB ENTITY
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 package ejbPack; import javax.ejb.*; import jpaPack.*; import javax.persistence.*; @Stateless public class BeanService { @PersistenceContext private EntityManager em; public void createCustomer(Customer cust){ em.persist(cust); } public Customer findCustomer(int id){ return em.find(Customer.class,id); } }
SERVLET DE CONROLE
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 package entites; import java.io.Serializable; import javax.persistence.*; @Entity @Table(name="customer") public class Customer implements Serializable { private static final long serialVersionUID = 1L; @Id @Column(name="Num") private int num; @Column(name="Nom") private String nom; @Column(name="Prenom") private String prenom; public Customer() { } public int getNum() { return this.num; } public void setNum(int num) { this.num = num; } public String getNom() { return this.nom; } public void setNom(String nom) { this.nom = nom; } public String getPrenom() { return this.prenom; } public void setPrenom(String prenom) { this.prenom = prenom; } }
FICHIER DE PERSISTENCE (META-INF/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
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 package webPack; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.ejb.*; import ejbPack.*; import jpaPack.*; @WebServlet("/ControlServlet") public class ControlServlet extends HttpServlet { private static final long serialVersionUID = 1L; @EJB private BeanService ser; private Customer c=new Customer(); public ControlServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //OUVERTURE SIMPLEMENT DE LA PAGE INDEX request.getRequestDispatcher("index.jsp").forward(request, response); //AFFICHAGE DES DONNEES LIEES A LA CLE = 10 Customer cus = ser.findCustomer(10); System.out.println(cus.getNom()); //PERSISTENCE DE CES DONNES, PAS BESOIN DE SPECIFIER LE NUMERO CAR C'EST UN CHAMPS AUTO c.setNom("EKONO NLEME"); c.setPrenom("Aristide"); ser.createCustomer(c); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } }
Merci pour votre attention
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 <?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="WebProjet" transaction-type="JTA"> <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> <class>jpaPack.Customer</class> <properties> <property name="javax.persistence.jdbc.password" value=""/> <property name="javax.persistence.jdbc.user" value="root"/> <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/scolarite"/> <property name="javax.persistence.ddl-generation" value="drop-and-create-tables"/> <property name="javax.persistence.logging.level" value="INFO"/> </properties> </persistence-unit> </persistence>
Partager