You are on page 1of 14

Tutorial Eclipse / WTP Cr eation dune application Web

Matthieu EXBRAYAT, Universit e dOrl eans Matthieu.Exbrayat@univ-orleans.fr Octobre 2006

Avertissement

Ce petit tutorial permet de prendre en main wtp sous eclipse et de r ealiser une application simple contenant un ejb session stateless et un servlet. Ce tutorial poss` ede lavantage de d ecrire le fonctionnement avec des versions r ecentes des logiciels utilis es. Les noms des r epertoires dacc` es, notamment ` a eclipse, xdoclets, jboss, peuvent di erer entre ce tutorial et les installations r ealis ees en salle machine. Vous trouverez plusieurs tutoriaux compl ementaires sur internet : http://www.eclipse.org/webtools/community/communityresources.html. Ces tutoriaux en anglais couvrent un spectre plus large de mises en oeuvre, n eanmoins les versions des logiciels utilis ees peuvent etre plus anciennes et la mise en oeuvre l eg` erement di erente de ce que vous serez ammen es ` a faire en manip.

Pr eparation de lenvironnement

An de se simplier la vie par la suite, nous allons d` es ` a pr esent d enir quelques propri et es au niveau de lespace de travail : Dans la barre de menu, choisir Windows/preferences.

2.1

Serveur dapplication

Dans la fen etre de pr ef erences, commencer par d enir le serveur dapplication par d efaut: dans la rubrique Server/installed runtimes (g. 1), faire Add et choisir Jboss/Jboss v4.0, faire Next et indiquer le r epertoire dinstallation de jboss (g. 2). cliquer sur Finish.

2.2

Xdoclets

Dans la rubrique Xdoclet (g. 3), renseigner la rubrique xdoclet home et indiquer quil sagit de la version 1.2.3. Congurer ensuite les tags pour ejb et web comme indiqu e dans les gures 4 et 5. Ces tags indiquent quels chiers seront produits automatiquement par eclipse pour les ejb et les modules web.

2.3

Cache et proxy

Enn, si n ecessaire, activer le proxy (n ecessaire en salle de manip) et d econnecter le cache (quelques probl` emes sous linux pour acc eder ` a la licence de chiers xsd, demand ee pour le cache, donc ...). Pour le proxy, dans la rubrique Internet/proxy, cocher Enable proxy et congurer le proxy. Pour le cache, dans la rubrique Internet/cache (g. 6), cocher Disable caching.

Figure 1: Conguration jboss - 1

Figure 2: Conguration jboss - 2

Figure 3: Conguration xdoclets - chemin et version

cr eation du projet

Dans le menu Eclipse, faire File/New/Project puis choisir J2EE/Enterprise Application Project (g. 7). Cliquer Next. Dans la fen etre suivante (g. 8), renseigner le nom du projet. V erier que Target Runtime contient bien le serveur JBoss. Cliquer Next deux fois (rien ` a congurer dans la fen etre suivante). 2

Figure 4: Conguration xdoclets - ejb

Figure 5: Conguration xdoclets - web

Dans la fen etre J2EE Modules to Add... (g. 9), cliquer New Module... (g. 10), d es electionner Connector module, et cliquer sur Finish. Cliquer egalement sur Finish dans la fen etre J2EE Modules to Add.... Le projet est cr e e (g. 11).

Figure 6: D esactivation du cache

Figure 7: Nouveau projet : choix du type de projet

Figure 8: Nouveau projet : nom du projet et choix du serveur dappli

Figure 9: Nouveau projet : cr eation des modules

Figure 10: Nouveau projet : choix des modules

Ajout dun EJB session (stateless)

Placer la souris sur le module EJB (EssaiEJB), faire un clic droit pour ouvrir le manu contextuel, et choisir New/Xdoclet Enterprise JavaBean. Choisir Session Bean (g. 12) et cliquer sur Next. Dans la fen etre EnterpriseJavaBean (g. 13), donner un nom de package (e.g. ejb), et un nom de classe (e.g. HelloBean). Cliquer Next. V erier les infos de la fen etre suivante (g. 14), notamment le type dEJB session et cliquer Next. Dans la fen etre suivante (g. 15), d es electionner Abstract, pour indiquer quil nest pas n ecessaire de d eriver la classe HelloBean, et cliquer sur Finish. Lorsque la cr eation du bean est termin ee, vous pouvez consulter le package ejb, dans larborescence EssaiEJB/ejbModule du Project Explorer (g. 16) : HelloBean a et e cr e e, mais egalement les interfaces locales et distantes, ainsi que le home local et distant.

Figure 11: Nouveau projet : vue densemble

Figure 12: Cr eation dun EJB : choix du type

Figure 13: Cr eation dun EJB : package et nom

Figure 14: Cr eation dun EJB : conguration pour d eploiement

Figure 15: Cr eation dun EJB : conguration de la classe

Figure 16: Cr eation dun EJB : les chiers g en er es

Ajout dune m ethode m etier dans lEJB

Ouvrez le code de HelloBean en double-cliquant sur HelloBean.java. Vous pouvez constater que le code contient des tags xdoclets. Mieux vaut ne pas les modier ` a la main... pour linstant en tout cas. Une m ethode m etier distante foo a et e g en er ee. Vous pouvez la modier ou la supprimer... Nous allons cr eer une m ethode m etier distante hello. Dans le code de lEJB, nous ajoutons le code suivant (on peu se contenter de modier foo) :

/** * <!-- begin-xdoclet-definition --> * @ejb.interface-method view-type="remote" * <!-- end-xdoclet-definition --> */ public String hello() { return "hello"; } On peut constater que lors de la sauvegarde de HelloBean.java, les interfaces sont r eg en er ees et que Hello.java contient maintenant la m ethode hello. Vous pouvez egalement aller consulter les chiers de d eploiement g en er es dans EssaiEJB/ejbModule/META-INF.

6
6.1

D eveloppement du Servlet
Acc` es aux EJB

Nous allons cr eer, dans le module Web (EssaiWeb) un servlet qui ira interroger lEJB Session stateless et achera le retour de la m ethode hello. Pour ce faire, il faut que le Servlet ait acc` es aux interfaces home et distante de notre EJB, ce quil fera gr ace au module EJBCLient.jar g en er e, lequel sera plac e dans le module WEB g en er e. S electionner EssaiWeb, et dans le menu contextuel choisir properties. Dans la fen ere des propri et es (g. 17), s electionner J2EE Module Dependencies et la compl eter comme suit : s electionner use EJB Client JARs et cocher EssaiEJB.jar. Cliquer sur Apply puis sur OK.

Figure 17: Conguration du module Web : import des interfaces de lEJB

6.2

Cr eation du Servlet

Dans le menu contextuel de EssaiWeb, choisir New/Servlet. Dans la fen etre Create Servlet (g. 18), indiquer le package (e.g. web) et le nom du servlet (e.g. HelloServlet). Ne pas oublier de cocher generate an annotated servlet class (sinon, il est probable que le servlet ne soit pas ajouter au descripteur de d eploiement). Cliquer Next. Dans la fen etre suivante (g. 19), remarquer le champ Url mapping, qui indique le nom ` a invoquer lorsque lon souhaitera lancer le servlet, puis cliquer Next. Dans la fen etre suivante (g. 20), cocher la m ethode init, puis cliquer sur Finish. Modier le code du servlet g en er e de la mani` ere suivante : package web; import java.io.IOException; import java.io.PrintWriter; import import import import javax.ejb.CreateException; javax.naming.Context; javax.naming.InitialContext; javax.naming.NamingException;

Figure 18: Cr eation dun Servlet : package et nom

Figure 19: Cr eation dun Servlet : mapping

Figure 20: Cr eation dun Servlet : choix des m ethodes surcharg ees

10

import import import import

javax.rmi.PortableRemoteObject; javax.servlet.ServletException; javax.servlet.http.HttpServletRequest; javax.servlet.http.HttpServletResponse;

import ejb.Hello; import ejb.HelloHome; /** * @web.servlet * name="HelloServlet" * display-name="HelloServlet" * * @web.servlet-mapping * url-pattern="/HelloServlet" * * @web.ejb-local-ref home="ejb.HelloHome" * local="ejb.Hello" * name="ejb/Hello" type="Session" * link="Hello" * * @jboss.ejb-local-ref ref-name="Hello" * jndi-name="Hello" */ public class HelloServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet { private HelloHome home=null; public HelloServlet() { super(); } private void execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Hello h=getBean(); response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<HTML><HEAD><TITLE>Servlet de test / Hello</TITLE></HEAD><BODY>"); if (h==null) { out.println("Probl` eme lors de lacc` es ` a lEJB"); } else { out.println("EJB Localis e<BR>"); out.println("La m ethode Hello a retourn e la valeur : "); out.println(h.hello()); } out.println("</BODY></HTML>"); out.close(); }

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { execute(request,response); } protected void doPost(HttpServletRequest request, HttpServletResponse response)

11

throws ServletException, IOException { execute(request,response); } /** * On se sert de la m ethode init pour se connecter au home de Hello. */ public void init() throws ServletException { super.init(); try { Context ctx=new InitialContext(); Object obj=ctx.lookup("Hello"); home = (HelloHome) PortableRemoteObject .narrow(obj, HelloHome.class); } catch (NamingException e) { e.printStackTrace(); } } /** * m ethode priv ee pour instancier le bean */ private Hello getBean() { try { return home.create(); } catch (Exception e) { e.printStackTrace(); return null; } } }

12

7
7.1

d eploiement et test de lapplication


lancement du serveur jboss

Dans longlet Servers declipse, faire clic droit/ New/Server. Choisir Jboss v4.0 (voir installed runtimes) (g. 21), faire Next deux fois, puis dans Add and remove projects (g. 22), ajouter le projet Essai. Cliquer Finish. Jboss appara t maintenant dans la fen etre des serveurs, ` a l etat stopped. Pour le lancer, s electioner la ligne puis faire un start in debug mode (petit bug vert).

Figure 21: Lancement de Jboss : s election du serveur

Figure 22: Lancement de Jboss : lapplication

d eploiement de

La trace de d emarrage d eroule dans la console. A la n du d emarrage on revient sur la fen etre Servers, o` u jboss est maintenant en mode debugging.

7.2

Essai du servlet

Lancer un navigateur web, et atteindre lURL http://localhost:8080/EssaiWeb/HelloServlet. Si tout va bien la fen etre de la gure 23 sache :

13

Figure 23: Essai : appel au servlet r eussi

14

You might also like