juin
2008
Suite à ce billet par wichtounet où il montre comment créer et lancer une application Wicket via maven et Jetty, je vais montrer dans ce billet comment créer et configurer une application Wicket à partir de zéro dans eclipse europa.
1. Récupération des jars nécessaires
a. Wicket
On commence par récupérer la distribution Wicket téléchargeable ici (il s’agit de la version 1.3.3, la dernière version stable de Wicket).
Une fois téléchargé, décompresser l’archive sur votre disque.
b. slf4j et Log4j
Wicket utilise Slf4J pour le logging, faut donc télécharger la chose ici, et décompresser l’archive.
Il vous faut aussi Log4j téléchargeable ici par exemple.
2. Génération d’un projet web dynamique sous eclipse
Un projet Wicket est en fin de compte un projet web dynamique au sens d’eclipse.
J’ai déjà posté un billet montrant comment créer un tel projet en utilisant le tooling WebTools d’eclipse europa, je vais donc me contenter de pointer vers ce billet.
Donc, à la fin de cette étape, vous devriez finir avec un projet qui ressemble à ceci:
3. Configuration du classpath
Dans eclipse, clic droit sur le projet, properties et Java Build Path, ce qui donne cette fenêtre:
Cliquez sur « Add External jars » et localiser le dossier lib dans le répertoire où vous avez décompressé Wicket, et sélectionnez les jars:
- Wicket-1.3.3.jar
- Wicket-datetime1.3.3.jar
- Wicket-extensions-1.3.3.jar
Il faut aussi ajouter les jars de slf4j et de log4j, donc, « Add External jars » encore une fois et localisez les jars suivants:
- log4j.jar
- slf4j-api.jar
- slf4j-log4j12.jar
Et validez.
Reste encore un casse gueule classique d’eclipse, et qui est de rendre ces jars disponibles lors du runtime.
Pour ce faire, dans eclipse, clic droit sur le projet, properties et « J2EE Module Dependencies », ce qui donne cette fenêtre:
Cochez tout, comme le montre la capture et validez.
4. Création de la page d’acceuil et de l’application Wicket
a. Page d’accueil
Dans le dossier src du projet, créez un package, puis clic droit sur ce package, New et New Class:
Choisissez un nom pour la page d’accueil, mais surtout sélectionnez org.apache.wicket.markup.html.WebPage
comme classe parente et validez.
Juste pour tester, je vais ajouter un Label à cette page, dont voici le code complet:
package djo.wicket.introo;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
public class IntrooPage extends WebPage {
public IntrooPage() {
add(new Label("hello", "HelloWorld"));
}
}
Il faut ensuite créer la page HTML correspondant à la classe qu’on vient de créer.
Dans eclipse, clic droit, New, New HTML:
=> La page doit obligatoirement avoir le même nom que la classe de la page.
Dans la fenêtre qui s’affiche, saisissez le nom de la page, mais surtout sélectionnez le package qu’on vient de créer comme conteneur de a page: eclipse sélectionne WebContent par défaut, même si on a fait le clic droit sur le package.
Dans cette page, il faut créer la balise qui correspond au label qu’on a crée dans la classe java:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
</head>
<body>
<span wicket:id="hello">Bla bla bla</span>
</body>
</html>
b. L’Application Wicket
Il faut maintenant créer la classe de l’application Wicket.
clic droit sur le package, NEw, New Java Class ce qui donne:
Enfin, voici un lien pour récupérer le WAR de l’application montrée dans ce billet, qui plus est inclut les sources.
Saisissez le nom de l’application, mais surtout org.apache.wicket.protocol.http.WebApplication
comme classe parente et validez.
eclipse génère automatiquement une implémentation par défaut de la méthode abstraite getHomePage.
Il faut donc modifer cete méthode pour retourner la page qu’on vient de créer:
package djo.wicket.introo;
import org.apache.wicket.protocol.http.WebApplication;
public class IntrooApp extends WebApplication {
@Override
public Class getHomePage() {
return IntrooPage.class;
}
}
5. Configuration de web.xml
Voilà, c’est la dernière étape où il faut ajouter le filtre de Wicket au fichier web.xml ainsi que son mapping.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>wicket-project</display-name>
<filter>
<filter-name>WicketApplication</filter-name>
<filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
<init-param>
<param-name>applicationClassName</param-name>
<param-value>djo.wicket.introo.IntrooApp</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>WicketApplication</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
Notez juste qu’il faut spécifier le nom complet de son classe application comme value à l’init-param applicationClassName du filtre.
6. Lancer la chose
Rien de compliqué: clic droit sur le projet, Run As et Run On Server:
Ce qui devrait donner ceci dans la console:
May 23, 2008 2:39:05 PM org.apache.catalina.core.AprLifecycleListener init
INFO: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/lib/jvm/java-6-openjdk/jre/lib/i386/client:/usr/lib/jvm/java-6-openjdk/jre/lib/i386:/usr/lib/jvm/java-6-openjdk/jre/../lib/i386:/usr/lib/jvm/java-6-openjdk/jre/lib/i386/client::/usr/lib/jvm/java-6-openjdk/jre/lib/i386::/usr/lib/xulrunner-addons:/usr/lib/xulrunner-addons:/usr/java/packages/lib/i386:/lib:/usr/lib
May 23, 2008 2:39:05 PM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
May 23, 2008 2:39:05 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 817 ms
May 23, 2008 2:39:05 PM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
May 23, 2008 2:39:05 PM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.14
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. ***
********************************************************************
May 23, 2008 2:39:06 PM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
May 23, 2008 2:39:06 PM org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
May 23, 2008 2:39:06 PM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/188 config=null
May 23, 2008 2:39:06 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 1453 ms
May 23, 2008 2:39:36 PM org.apache.catalina.core.StandardContext reload
INFO: Reloading this Context has started
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. ***
********************************************************************
et ceci dans le navigateur:
7. Télécharger
Le WAR de l’application montrée dans ce billet peut être récupéré ici. A noter que les sources sont incluses dans le WAR.
Bonjour,
personnellement, pour ajouter les .jar, le plus rapide et le plus simple que j’ai trouvé :
avec un explorateur de fichier, je me positionne dans le dossier qui contient les jar qui m’intéresse, je les sélectionne et ctrl-c (copier)
avec eclipse, dans un projet web dynamique, je me positionne sur le dossier WEB-INF/lib et ctrl-v (coller)
Eclipse ajoute automatiquement les librairies dans le classpath (visible dans le « dossier virtuel » Web Libraries)
En un seul coup, elles sont donc dispo pour l’environnement de développement (Eclipse) et pour le serveur configuré.