En route vers Wicket - Quickstart (part 3/3)
Eclipse, Ivy, Java, Tutorial, Wicket par nicogiard Add commentsTroisième et dernier post de la série des “En route vers Wicket”.
Vous allez mettre en œuvre votre première application Wicket grâce à Eclipse / Ivy / Tomcat.
Création du « Projet Web Dynamique » :
Dans la vue [Project Explorer], faites un [clic droit / New / Dynamic Web Project]

Saisissez le nom de projet (par exemple : helloWorld). Si vous suivez ce guide à la lettre vous n’aurez pas d’autres modifications à faire sur cet écran. Cliquez sur le bouton [Next].

Cliquez sur le bouton [Finish] (c’est facile hein).

Et voila, ce que vous devez avoir comme arborescence dans la vue « Project Explorer » :

Editez le fichier [web.xml] et remplacer le contenu par :
web.xml :
<?xml version="1.0" encoding="UTF-8"?> <web-app> <display-name>HelloWorldApplication</display-name> <context-param> <param-name>configuration</param-name> <param-value>development</param-value> <!-- <param-value>deployment</param-value> --> </context-param> <filter> <filter-name>HelloWorldApplication</filter-name> <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>com.noocodecommit.wicket.helloworld.wicket.HelloWorldApplication</param-value> </init-param> </filter> <filter-mapping> <filter-name>HelloWorldApplication</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
Ensuite, créez les fichiers [build.xml] et [ivy.xml] à la racine de votre projet.
build.xml :
<project name="helloworld" default="resolve" xmlns:ivy="antlib:org.apache.ivy.ant"> <property name="ivy.lib.dir" value="WebContent/WEB-INF/lib" /> <!-- ================================= target: resolve ================================= --> <target name="resolve" description="-->retreive dependencies with ivy"> <ivy:retrieve/> </target> <!-- ================================= target: clean-cache ================================= --> <target name="clean-cache" description="-->clean the ivy cache"> <ivy:cleancache /> </target> </project>
ivy.xml :
<ivy-module version="2.0"> <info organisation="com.noocodecommit" module="helloworld"/> <dependencies> <dependency org="org.apache.wicket" name="wicket" rev="1.3.0"/> <dependency org="org.slf4j" name="slf4j-log4j12" rev="1.4.3"/> </dependencies> </ivy-module>
Nous allons maintenant lancer notre script ant, pour récupérer automatiquement (grâce à Ivy) les librairies nécessaires pour développer une application Wicket.
Dans le menu [Window / Show View / Other]

Dans l’arborescence [Ant], sélectionnez [Ant] et cliquez sur le bouton [OK]

Eclipse vous a ouvert la vue « Ant ». Faites un glisser / déposer du fichier [build.xml] dans cette vue. Vous devez avoir le résultat suivant. Sélectionnez la « target » [resolve] et cliquez sur le bouton [Run the Selected Target] (le bouton « play »).

Vous allez maintenant créer vos classes / html.
Dans le menu [File / New / Other…].
Dans l’arborescence [Java], sélectionnez [Class] et cliquez sur le bouton [Next].
Renseignez ce wizard :
- [com.noocodecommit.wicket.helloworld.wicket]
- [HelloWorldApplication]
- [WebApplication] puis ctrl + espace
et cliquez sur le bouton [Finish].

Et voila ce que Eclipse à créer pour vous :

Modifiez la méthode [getHomePage()] :

Normalement, vous avez une erreur « HelloPage cannot be resolve as a type ». Faites un clic gauche sur la petite ampoule barrée d’une croix rouge dans la marge. Cela ouvre une petite fenêtre qui vous propose choix pour corriger l’erreur. DoubleCliquez sur [Create class ‘HelloPage’]

Modifiez les informations par :
- [com.noocodecommit.wicket.helloworld.wicket.pages]
- [WebPage] puis ctrl + espace
Cliquez sur le bouton [Finish]

Nous allons maintenant créer la page html associées à notre classe « HelloPage ».
[Clic droit sur le nœud « pages » / New / HTML].

Sélectionnez le noeud “pages” de l’arborescence [src / com / noocodecommit / wicket / helloworld / wicket / pages] et renseignez le champ [File name] avec [HelloPage.html] (exactement le même nom que la classe mais avec l’extension .html)
Cliquez sur le bouton [Finish]

Modifiez le contenu du fichier HelloPage.html
HelloPage.html :
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Ma premiere application Wicket</title> </head> <body> <h1>Hello World!!!</h1> </body> </html>
Déploiement
Nous allons maintenant déploier notre projet dans notre serveur Tomcat.
Dans la vue [Servers], faites un clic droit sur la ligne du serveur Tomcat et cliquez sur [Add and Remove Projects…]

Sélectionnez [helloWorld] dans la liste de gauche et cliquez sur le bouton [Add>]

Démarrez le serveur Tomcat, à l’aide du bouton [Start the server] (le bouton play) de la vue Servers

Votre serveur Tomcat est maintenant démarré (vérifiez tout de même qu’il n’y ai pas eu de message d’erreur dans la vue « Console »)
5 janv. 2008 20:31:25 org.apache.catalina.core.AprLifecycleListener lifecycleEvent INFO: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:Program FilesJavajre1.6.0_03bin;.;C:WINDOWSSunJavabin;C:WINDOWSsystem32;C:WINDOWS;C:Program FilesJavajre1.6.0_03binclient;C:Program FilesJavajre1.6.0_03bin;C:Programmesapache-ant-1.7.0bin;C:Programmesmaven-2.0.7bin;C:ProgrammesJavajdk1.6.0_3bin;C:WINDOWSsystem32;C:WINDOWS;C:WINDOWSSystem32Wbem;C:Program FilesATI TechnologiesATI Control Panel;C:Program FilesQuickTimeQTSystem; 5 janv. 2008 20:31:25 org.apache.coyote.http11.Http11BaseProtocol init INFO: Initialisation de Coyote HTTP/1.1 sur http-8080 5 janv. 2008 20:31:25 org.apache.catalina.startup.Catalina load INFO: Initialization processed in 1191 ms 5 janv. 2008 20:31:25 org.apache.catalina.core.StandardService start INFO: Démarrage du service Catalina 5 janv. 2008 20:31:25 org.apache.catalina.core.StandardEngine start INFO: Starting Servlet Engine: Apache Tomcat/5.5.25 5 janv. 2008 20:31:25 org.apache.catalina.core.StandardHost start INFO: XML validation disabled log4j:WARN No appenders could be found for logger (org.apache.wicket.protocol.http.pagestore.FileChannelPool). log4j:WARN Please initialize the log4j system properly. ******************************************************************** *** WARNING: Wicket is running in DEVELOPMENT mode. *** *** ^^^^^^^^^^^ *** *** Do NOT deploy to your live server(s) without changing this. *** *** See Application#getConfigurationType() for more information. *** ******************************************************************** 5 janv. 2008 20:31:27 org.apache.coyote.http11.Http11BaseProtocol start INFO: Démarrage de Coyote HTTP/1.1 sur http-8080 5 janv. 2008 20:31:27 org.apache.jk.common.ChannelSocket init INFO: JK: ajp13 listening on /0.0.0.0:8009 5 janv. 2008 20:31:27 org.apache.jk.server.JkMain start INFO: Jk running ID=0 time=0/60 config=null 5 janv. 2008 20:31:27 org.apache.catalina.storeconfig.StoreLoader load INFO: Find registry server-registry.xml at classpath resource 5 janv. 2008 20:31:28 org.apache.catalina.startup.Catalina start INFO: Server startup in 2684 ms
Test
Dans un Navigateur Web (par exemple Firefox), allez à l’adresse [http://localhost :8080/helloWorld], vous devriez avoir le résultat suivant :

Les sources du projet se trouvent ici.












January 30th, 2008 at 00:12
Mis en place sous linux sans souci (excepté pour ant ou il m’a fallu faire un lien symbolique vers /bin, mais bon je l’ai cherché aussi, d’être sous linux …)
January 31st, 2008 at 21:15
Bon le build ant marche pas :
BUILD FAILED
C:\Java\workspace\TomHelloWorld\build.xml:7: Problem: failed to create task or type antlib:org.apache.ivy.ant:retrieve
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any / declarations have taken place.
This appears to be an antlib declaration.
Action: Check that the implementing library exists in one of:
-C:\Java\eclipse-jee-europa-fall2-win32\plugins\org.apache.ant_1.7.0.v200706080842\lib
-C:\Documents and Settings\Thomas\.ant\lib
-a directory added on the command line with the -lib argument
réessaierai plus tard!
February 1st, 2008 at 00:28
T’as du oublier l’étape ou tu ajoute la lib d’ivy dans l’épisode 2, sous le titre “Configuration du plugin Ant”. Si jamais ce n’est pas ça tu me redira.
February 1st, 2008 at 17:19
C’est bizarre, j’ai tout suivi à la lettre mais la complétion (Ctrl + Space) ne marche pas dans les wizards d’ajout de classe.
February 1st, 2008 at 17:53
@mxv : es-tu sous Linux? Parceque l’ami kokoni m’a fait la même remarque, mais il est sous Linux. Sous Windows ca marche bien. Bon ben je suis bon pour modifier le post pour mettre en toute lettre le chemin.
Merci pour ton feedback
February 5th, 2008 at 12:53
@mxv : en fait si tu n’as pas fait un refresh sur ton projet dans Eclipse après avoir lancé la target “resolve”, Eclipse ne voit pas les jar, et ne peut pas te proposer la classe WebApplication. Il faut donc faire un F5 sur ton projet ou un [clic droit sur ton projet / refresh]
February 7th, 2008 at 11:11
Ca marche nikel maintenant…
Nico t’es le meilleur!
Ma migration .net vers java avance doucement…
October 6th, 2008 at 16:31
[...] Je vais passer ici la partie qui consiste à créer une application web avec Wicket. Si vous avez besoin d’une piqure de rappel, je vous invite à consulter ce post de nicogiard. [...]