IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JPA Java Discussion :

Lien entre un projet EJB/JPA/Web Dynamique (Débutant)


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Par défaut Lien entre un projet EJB/JPA/Web Dynamique (Débutant)
    Je suis débutant dans la technologie J2EE, et j'avance pas à pas, actuellement je suis bloqué au niveau de la communication Web - EJB -Persistance et Persistance - EJB -Web
    - J'ai créé un projet Web Dynamique dans lequel j'ai 4 formulaires JSP qui communiquent normalement avec ma Servlet et s'échangent les données sans problème

    - J'ai ensuite créer un Projet EJB3 dans lequel j'ai un simple EJB qui m'affiche simplement un message.

    - J'ai créer un projet JPA dans lequel j'ai mes 4 Entity Beans de persistance représentant mes 4 tables (qui sont des persistances pour mes 4 formulaires)

    Je suis buté aux problème suivant

    1) J'ai déjai essayé de faire communiquer mon Projet EJB avec mon Projet web en intégrant simplement le projet EJB dans le Buid Parth du dans mon Projet Web (dans l'onglet Projet) et en l'appelant dans ma Servlet. Mais lorsque j'exécute ma Servlet, le message provenant du EJB s'affiche one fois, puis a la prochaine exécution, il affiche null, ainsi de suite, alternant entre le message et null

    2) Deuxièmement, je ne sais pas comment faire communquer mon projet JPA avec le projet EJB de telle sorte que la Logic pour communiquer et gérer la persistance

    3) Enfin Comment faire pour récuperer les données venant du projet de persisatance (JPA) à partir de ma Serlet pour afficher dans mes formulaire ou alors partir de la Servlet (récupérer les données du formulaire) pour la persistance.

    Quelqu'un a-t-il des directives ou un tuto ?
    Outils de travail : Eclipse Helios J2EE ; Jboss 6

    Merci

  2. #2
    Membre éclairé
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Par défaut
    Le premier problème du d'affichage de null est résolu, j'avais en fait un message dans mon code que je ne répérais pas.

    Maintenant il me reste à faire communiquer les trois projets ou les trois couches ( Web - EJB - JPA )
    Comment faire en fait pour récupérer les données venant du projet de persistance (JPA) à partir de ma Sevrlet passant par mes EJB 3 pour afficher dans mes formulaire ou alors partir de la Servlet (c'est à dire récupérer les données du formulaire) pour les envoyer dans mes Entity de persistance passant par les EJB 3

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Par défaut
    Après m'etre cassé la tête pendant 3 jours sans les livres et sur le Net, je n'ai toujours pas la solution, personne pour m'aider ??

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Par défaut
    Bonjour,

    Puisque tu es débutant en Java EE, il vaut mieux commencer par des choses simples. Et comme j'imagine que tu fais ton apprentissage avec la dernière version du standard (JavaEE6), tu as juste besoin de créer un projet Web contenant tes JSPs, tes Servlets, tes EJBs, et tes entités JPA. Ensuite tu packages le tout dans un .war que tu déploies directement sur JBoss 6 (ou GlassFish 3) et c'est tout. Pour la communication entre les différents composants, tu fais l'injection de l'EJB dans la servlet, puis de l'EntityManager dans l'ejb; la page jsp peut avoir directement accès à l'entité JPA. C'est vraiment hyper-simple maintenant de réaliser une "petite" application JavaEE fonctionnelle en quelques lignes de code.

    Tiens, un petit exemple rapide pour te donner une idée:

    L'entity:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    @Entity
    public class Customer {
       @Id
       private int id;
       private String name;
       ...
    }
    L'EJB:
    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
    public class CustomerServiceBean {
       @PersistenceContext
       private EntityManager em;
     
       public Customer createCustomer(Customer customer) {
           em.persist(customer);
           return customer;
       }
     
       public Customer findByPrimaryKey(int id) {
           return em.find(Customer.class, id);
       }
       ...
    }
    La servlet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class CustomerServlet extends HttpServlet {
       @EJB private CustomerServiceBean service;
     
       protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ... {
            Integer id = Integer.valueOf(request.getParameter("id"));
            Customer customer = service.findByPrimmaryKey(id);
            resquest.setAttribute("customer", customer);
            ...
       }
    }
    Ensuite sur ta page JSP, tu peux accéder à l'objet "customer" qui a été mis dans le scope request.

    Et ainsi de suite...
    Tu peux aller voir le tutorial JavaEE6 pour plus d'exemples.

    Bon courage.

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Par défaut
    OK, merci beaucoup manblaizo. En fait j''ai passé près de 3 mois a étudier et je suis lancé dans la pratique il y a quelques semaines. J'ai pris un petit projet école de 4 table (Etudiant, Classe, Filiere, Enseignant) dans ma base de donnée MySQL. et je voulait au travers de ce projet, mettre en pratique toutes les notions aprises. J'ai créer un projet web avec Serlet et 4 formulaires jsp et un projet JPA où j'ai mapper les tables avec mes Entity Beans et un projet EJB où j'ai quelques petits EJB.

    Je manipule déjà moyennement les Servlet et les JSP (récupération des donnés, paramètres, passage de paramètres entre les pages,....). Et je me butais dons au problème de faire persister les données effectivement dans ma table MySQL et faire le lien entre les 3 projets.

    Mais qu'à cela ne tienne, j'ai suivis ton conseil et j'ai créer le projet web et implémenter ces trois parties que tu as détaillé plus haut. Et là encore j'ai eu un petit problème celui de la gestion de la connexion à la Base de données MySQL pour faire effectivement persister l'objet Customer.

    Je pensais qu'après avoir ajouter la librairie du connecteur de MySQL dans mon CLASSPATH et après avoir créer le fichier persistence.xml suivant dans mon répertoire META-INF, ça marcherait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <persistence-unit name="ProjetWeb" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>ejbPackage.customer</class>
    <properties>
    <property name="eclipselink.jdbc.password" value=""/>
    <property name="eclipselink.jdbc.user" value="root"/>
    <property name="eclipselink.jdbc.driver" value="com.mysql.jdbc.Driver"/>
    <property name="eclipselink.jdbc.url" value="jdbc:mysql://localhost:3306/scolarite"/>
    <property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
    <property name="eclipselink.logging.level" value="INFO"/>
    </properties>
    </persistence-unit>
    </persistence>
    Partout où je rencontre le fichier persistence.xml, il est simplement dit qu'il doit être placé dans le répertoire META-INF, aucune autre indication n'est donnée.

    Comment configurer ce fichier et comment le manipuler pour que je puisse effectivement persister mes données et les récupérer à nouveau de ma BD ? Ce sera pour moi un grand pas.

    Merci

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Par défaut
    Bonjour,

    Tu pourrais détailler un peu ce qui ne marche pas, ou quelle erreur tu obtiens ?

    Par contre, il faudrait enlevé l'attribut transaction-type="RESOURCE_LOCAL", ou mettre transaction-type="JTA" dans ton ficihier persistence.xml, parce que tu déploies sur un serveur d'applications; par défaut la valeur est JTA.

    Ce fichier persistence.xml, tu peux le mettre dans WEB-INF/classes/META-INF/

    J'espère que ça résout ton problème.

Discussions similaires

  1. Réponses: 11
    Dernier message: 30/05/2011, 16h13
  2. [EJB3] [Eclipse] problème de références entre un projet EJB et son client
    Par olivier57b dans le forum Java EE
    Réponses: 2
    Dernier message: 17/03/2010, 16h00
  3. Changer la nature d'un projet Java en projet de type Web Dynamique ?
    Par shaun_the_sheep dans le forum Eclipse Java
    Réponses: 10
    Dernier message: 14/01/2010, 16h50
  4. Lien entre BDD Access et Appli Web Foireux
    Par BqiKo dans le forum Access
    Réponses: 4
    Dernier message: 21/07/2009, 10h51
  5. [C#] liens entre différents projets
    Par rastali dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/12/2005, 10h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo