Une introduction à la technologie EJB (2/2)

Les singletons des EJB 3.1

===> Faites fonctionner cet exemple avec OpenEJB (disponible ici)

Tout mettre ensemble !

L'objet de cet exercice est de construire une application d'entreprise qui regroupe des composants métier (EJB) et des composants Web (Servlet/JSP/JSF).

Suivez les étapes soigneusement :

  1. Téléchargez le serveur d'applications Glassfish 3.1.1 (disponible ici) et décompressez l'archive.
  2. Lancez Eclipse version JEE.
  3. Ajoutez un nouveau serveur (onglet Servers), cliquez sur le lien pour ajouter de nouveaux adaptateurs et choisissez Glassfish.
  4. Créez une Application d'entreprise « myapp » basée sur Glassfish 3.1.1. Elle est pour l'instant vide et vous devez sûrement avoir une erreur sur un fichier XML (contenu non défini).
  5. Créez ensuite un projet EJB (myappbeans) basé sur Glassfish 3.1.1, en prenant soin d'indiquer dans la première boite de dialogue que ce projet est une composante de l'application d'entreprise myapp.
  6. Créez dans ce projet un EJB Stateless ci-dessous :
    package myapp.beans;
    
    import javax.ejb.LocalBean;
    import javax.ejb.Stateless;
    
    @Stateless(name = "Hello")
    @LocalBean()
    public class Hello {
    
        public String sayHello() {
            return "Hello " + System.currentTimeMillis();
        }
    
    }
    
    Nous n'utiliserons pas d'interface (EJB local en version 3.1).
  7. Créez une application WEB (projet de type Dynamic WEB) de nom myappweb toujours associée à Glassfish 3.1.1 et associez-la à sa création à l'application d'entreprise que nous venons de créer.
  8. Modifiez le buildpath de l'application WEB pour utiliser les classes du projet myappbeans.
  9. Créez la servlet ci-dessous :
    package myapp.web;
    
    import java.io.IOException;
    
    import javax.ejb.EJB;
    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 myapp.beans.Hello;
    
    @WebServlet(
        name = "hello",
        displayName = "My JEE 6 Servlet",
        description = "Ma première servlet avec annotations",
        loadOnStartup = 10,
        urlPatterns = { "/Hello1", "/Hello2" }
    )
    public class HelloServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
    
        @EJB(name = "Hello")
        Hello hello;
    
        protected void service(HttpServletRequest request,
                HttpServletResponse response) throws ServletException, IOException {
            String data = hello.sayHello();
            response.getWriter().printf("<p>%s</p>", data);
        }
    
    }
    
  10. Exécutez l'application d'entreprise myapp sur le serveur Glassfish et testez votre application WEB avec l'adresse ci-dessous :
    http://localhost:8080/myappweb/Hello2
    
  11. Vous venez de construire une application autonome prête à être déployée sur une serveur d'applications JEE. Vous pouvez lui adjoindre d'autres composants métier (EJB) et/ou d'autres applications WEB.
  12. Pour étudier la structure d'une application EAR, vous pouvez exporter cet exemple (fichier myapp.ear) et analyser son contenu.

Politique de sécurité

===> Faites fonctionner cet exemple avec OpenEJB (disponible ici)