Présentation du framework Tapestry

image

Tapestry est un projet du groupe Apache Software Foundation dont le créateur est Howard Lewis Shi. Aujourd'hui, l'équipe de développement est composé de 8 personnes. De nombreux contributeurs participent au développement du framework en remontant des bugs ou en proposant des patchs. C'est un framework en constante évolution, aujourdh'hui la dernière stable connue est la 5.1.0.5.

Ce framework Java open source est orienté composant.Il s'appuie sur une architecture MVC. Chaque page de l'application web est associé à une classe Java. L'association se fait par des conventions de nommage. Le but étant de séparer la présentation (géré par les fichiers .tml) du code de gestion (classes java). Tapestry a pour objectif une grande simplicité d’utilisation afin de procurer une productivité optimale pour le développeur.

Installation

Pré-requis

Tapestry 5.1.0.5
serveur Tomcat 6
Eclipse galileo

Installation

Commencez par créer un nouveau projet web

image

Ensuite pour installer Tapestry 5.1.0.5, il suffit simplement d'importer les .jar suivant:

antlr-runtime-3.1.1.jar
commons-codec-1.3.jar
javassist-3.9.0.GA.jar
log4j-1.2.14.jar
slf4j-log4j12-1.5.2.jar
slf4j-api-1.5.2.jar
stax2-api-3.0.1.jar
stax-api-1.0.1.jar
tapestry5-annotations-5.1.0.5.jar
tapestry-core-5.1.0.5.jar
tapestry-ioc-5.1.0.5.jar
woodstox-core-asl-4.0.3.jar
image




-- Dans ce répertoire WebContent/Web-Inf/lib



Pour modifier le fichier web.xml: il suffit de copier cet exemple

<?xml version="1.0" encoding="UTF-8"?> css code<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
    <display-name>tutorial1 Tapestry 5 Application</display-name>
<context-param>
    <param-name>tapestry.app-package</param-name>
    <param-value>exemple</param-value>
</context-param>
<filter>
    <filter-name>app</filter-name>
    <filter-class>org.apache.tapestry5.TapestryFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>app</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>


Vous pouvez télécharger la base de votre projet avec les librairies déjà importées et le web.xml configuré via ce lien
Enfin pour lancer votre application web : il suffit de faire un clic droit sur le nom de votre projet (ici en l'occurence tutorial) puis "run as" puis "run on server"



Fonctionnement

Dans Tapestry 5, les pages comme les composants sont des pojo décorés par des annotations et/ou utilisant des noms de méthodes conventionnels. Exemple : pour une page de d’authentification, il faut créer deux fichiers « login.tml » et « login.java ». L'association des 2 fichiers se fait par une convention de nommage. Concrètement login.java doit se trouver dans le package exemple.pages et login.tml doit se trouver dans le dossier WebContent.

Des méthodes conventionnels permettent d'écouter les actions de la page. Exemple: la méthode onActivate() est exécutée dès que la page est appelée. Les annotations permettent d’injecter avec Tapestry IoC des services ou des composants. Exemple: @SessionState indique à Tapestry que l'atttribut est une variable de session.

L'apparition du layout component permet de facilité l'intégration d'un template pour l'application Web. Ainsi on définit une seule fois le design du site (bannière, footer, copyright...ect) et le composant <t:body/> permettra de faire le lien avec le contenu des autres pages. Concrètement dans eclipse, il faut créer un nouveau package que l'on nomme "exemple.components" et y ajouter 2 fichiers:
Layout.tml
Layout.java
Vous pouvez trouver un exemple de ces fichiers via ce lien



Avantages et inconvénients

Avantages

- Simplification du modèle de développement, basé sur des conventions plutôt que sur de la configuration
- Faciliter le développement des applications web en Java en créant des composants réutilisables très rapidement
- Les classes sont rechargées à chaud en cas de modification. Il n’y a donc pas besoin de relancer le serveur d’applications à chaque modification.
- Fonctionnalités Ajax
- Quelques composants utiles implémentés par la communauté
inconvénients

- La difficulté de prise en main (convention)
- pas de Retro compatibilité avec la version 4
- Disparité au sein de la version 5 (notamment au niveau des imports d'annotations)
- Communauté limitée et documentations éparses


Bibliographie

http://www.infoq.com/articles/tapestry5-intro
http://www.osaxis.com/blog/index.php/2009/01/29/19-tapestry-5-pour-optimiser-ses-developpements-j2ee
http://tapestry.apache.org/tapestry5/screencast.html
http://baptiste-meurant.developpez.com/tutoriaux/tapestry5-spring-hibernate/