Vous n'êtes pas connecté. Connexion
|
|
TP1 EJB : mise en place de l'environnement, premières applicationsDe $1Table des matières
Installation logicielleLogiciels obligatoires :
Installez donc le JDK si vous ne l'avez pas, puis netbeans, et passons à la suite. Vérification de l'installationLancez netbeans une fois l'installation terminée. Cliquez sur l'onglet "services" et ouvrez l'item serveurs. Vous devez voir que tomcat et glassfish sont installés :
Vérifions maintenant que tout est ok... L'archive que nous avons installée comprend l'outil de développement netbeans mais aussi le serveur d'application de Sun, appellé Glassfish. Lancez netbeans, puis allez dans l'onglet "services". Nous allons lancer le serveur pour voir si tout est ok: Puis, en demandant à voir la console d'administration, cela va ouvrir la page d'admin dans votre navigateur. En entrant le mot de passe adminadmin, une belle page devrait s'afficher. J'espère que vous n'avez pas modifié le mot de passe proposé par défaut, car dans une classe de TP, les statistiques prouvent que la moitié des élèves ne se souviennent plus de leur mot de passe très rapidement!
Le screenshot précédent présente la console d'administration. Nous en reparlerons plus tard. Le fait qu'elle s'affiche dans votre navigateur prouve que l'installation est ok. Création d'un nouveau projetNous allons créer maintenant un projet pour le TP d'aujourd'hui. Allez dans le menu file/new project, puis dans la fenêtre suivante, sélectionnez JavaEE comme catégorie de projet et « enterprise application » comme projet:
Cliquez sur « next », puis donnez un nom à votre projet et n'oubliez pas d'indiquer que nous allons utiliser le serveur d'application de Sun (glassfish pour netbeans 6)
Une fois terminé, vous verrez dans l'onglet project « trois sous projets » :
Le fichier .ear est en fait une archive qui contient les deux autres fichiers : le .jar et le .war, il permet de déployer l'ensemble de la web application d'un seul coup.
Création d'un premier ejb de type session bean stateless : HelloWorldAllez sur le sous projet TP1EJB_2009-ejb (celui avec l'icone en forme de haricot, qui correspond à la partie "ejb" du projet) et faites bouton droit/new/session bean :
Puis dans la fenêtre suivante, indiquez le nom de votre Ejb, son type, et un nom de package (obligatoire) :
Une fois terminé, deux fichiers sont ajoutés dans le sous-projet : HelloWordBean.java et HelloWorldLocal.java, qui correspondent à la classe du bean et à son interface « locale » (un bean avec un interface locale ne peut être utilisé que par un client tournant dans la même JVM : une jsp, une servlet ou un autre ejb). Ajoutons une méthode dans ce bean, la méthode getMessage() qui renvoie la chaîne de caractères «Hello World» : public String getMessage() { System.out.println("Hello World qui va s'afficher dans la console du serveur, pour trace"); return "Hello World"; } Puis, dans l'éditeur, cliquez sur l'en-tête de la méthode, une petite lampe jaune doit appraître sur la gauche, proposant des actions contextuelles. Choisissez "Add to Local Interface" pour indiquer que cette méthode n'est pas une méthode interne du bean mais une méthode qui sera accessible au travers de l'interface locale du bean. Si jamais cette lampe n'apparait pas, il faut dans ce cas, manuellement, ajouter l'en-tête de la méthode dans l'interface. D'ailleurs, si vous regardez le source de HelloWorldLocal.java, vous verrez les lignes suivantes : @Local public interface HelloWorldLocal { java.lang.String getMessage(); } Rappel : les lignes commençant par @ sont des « attributs de code » ou encore des "annotations de code". Ce sont en fait des méta-données… Elles serviront au compilateur à générer du code contextuel. Ceci permet de n'avoir dans le source .java que du POJO (Plain Old Java Object, une classe java "normale" en fin de compte !) Ecriture d'une servlet client de test de ce beanSur le projet finissant par -war, faites click droit/new/Servlet : N'oubliez pas de donner un nom de package ! Vous verrez que votre servlet est apparue dans les sources du projet. Vous savez (depuis le cours de technos web de l'an dernier) que dans un projet J2EE, les caractéristiques des servlets se trouvent dans le descripteur web.xml. Vous pouvez obtenir une vue éditable de ce fichier en double cliquant dessus, il se trouve sous "configuration" dans le projet : En double cliquant on peut éditer ce fichier au travers d'une interface graphique. Notamment, l'onglet "Servlets" permet de voir les URLs associés aux servlets : Dans les sources de cette servlet, on va indiquer que l'on va « parler » au bean HelloWorld. Pour cela, cliquez avec le bouton de droite dans le code de la servlet (n'importe où) et selectionnez « insert code » : Un menu apparait, choisissez "call enterprise bean" : Cela va insérer dans la Servlet deux lignes de code qui vont correspondre à la fois à la déclaration et à l'initialisation d'une variable référençant un objet du type de l'interface du Bean que l'on souhaite appeler. Le @EJB est l'annotation de code qui va procéder à "l'injection de code" lors de la compilation ou du déploiement. Bien que la variable helloWorldBean ne soit pas initialisée, on pourra l'utiliser, elle ne vaudra pas "null" comme cela pourrait sembler : public class ServletTest extends HttpServlet { @EJB private HelloWorldLocal helloWorldBean;
Notons aussi que quelques imports ont étés rajoutés, ce sont ceux dont le code généré aura besoin. L'objet helloWorldBean va, à partir de maintenant pouvoir être utilisé directement dans la servlet, sans que l'on ait besoin de l'initialiser. Ajoutons la ligne suivantes dans la méthode processRequest de la servlet : out.println("L'ejb HelloWorld a renvoyé :" + helloWorldBean.getMessage()); Sauvegardons le tout, et exécutons le projet principal : Cela va avoir pour effet de lancer le serveur d'application, (cette opération peut prendre un certain temps, mais n'ayez crainte, si on fait plusieurs fois "run", si le serveur tourne déjà il ne sera pas relancé) des lignes vont s'afficher et au final, vous devriez avoir une ligne : BUILD SUCCESSFUL (total time: 4 seconds) Votre projet a été déployé et le navigateur doit ouvrir la page par défaut . Nous allons maintenant invoquer la servlet. Prenez un navigateur et tapez l'URL suivant : http://localhost:8080/TP1ejb-war/servletTest, ou bien faites bouton de droite/run sur le projet "enterprise" global et complétez l'URL. Normalement après un certain temps, le navigateur ouvre une page correspondant à la page JSP index.jsp home page du projet (dans "web pages", dans le fichier war, vous pourrez modifier le nom de la home page en éditant le fichier web.xml). Rajoutons juste l'URL relatif de la servlet à la fin : /ServletTest. Sur mon PC cela donne : http://pc-de-michel:8080/2009-war/ServletTest Il ne s'affiche rien dans la page web ! C'est normal !!!! Regardez plutot la console du serveur : Voilà, vous avez exécuté votre première appli web utilisant des EJBs !!!! Ecriture d’un second bean appelé par le bean HelloWorld
Au final, lorsqu’on exécute la servlet de test, cela doit afficher : L'ejb HelloWorld a renvoyé : Hello World Je suis le second bean, appelé par le bean HelloWorld
Ecriture d'une page jsp qui appelle la servlet de testVous allez maintenant ajouter une page jsp au projet web (de la même manière que nous avions ajouté une servlet), dans la page Jsp, insérez un formulaire avec un seul bouton, ou si vous préférez, avec un lien <a href=/ServletTest>Appel de la servlet</a>. Lorsqu'on clique sur ce bouton ou sur ce lien, on appelle la servlet et le message de l'exercice précédent s'affiche. Accès à une base de donnée via un entity bean et un persistence managerLa base de données, prise de contactSans aller trop loin, nous allons un peu jouer avec une base de données d'exemple livrée avec le JDK. Les outils dont vous disposez viennent en effet en standard avec une petite base de données d'exemple. Vous pouvez la consulter en cliquant sur l'onglet Runtime et en allant dans Databases/jdbc:derby//etc.... Si jamais l'icône est cassée, faite clic droit/connect, le mot de passe est "app"... Dans cette base vous allez trouver les tables CUSTOMER, MANUFACTURER etc... en faisant click droit/view data sur les tables vous pouvez également consulter les données qui sont déjà disponibles. Nous allons jouer pendant plusieurs TPs avec cette petite base de données. Création d'un entity bean proxy de la table MANUFACTUREROk, passons aux choses sérieuses, nous allons créer un entity bean proxy vers la table MANUFACTURER. Pour cela bouton droite sur le projet ejb et choisissez entity classes from database, dans la fenêtre qui s'ouvre choisissez jdbc/sample comme datasource et parmis les tables proposées choisissez MANUFACTURER. |
Powered by MindTouch Deki Open Source Edition v.8.08 |