02.07.2013 Views

article de presse - Cap Data Consulting

article de presse - Cap Data Consulting

article de presse - Cap Data Consulting

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

T echnologie<br />

Comprendre et développer <strong>de</strong>s portlets en Java.<br />

Création d'un portlet 2 e partie<br />

Cette secon<strong>de</strong> partie fait suite à notre <strong>de</strong>scriptif dans le précé<strong>de</strong>nt numéro <strong>de</strong> la spécification<br />

JSR168.Dans cette section,nous allons développer un premier portlet que nous allons déployer<br />

sur Jetspeed 2, un portail open-source développé au sein <strong>de</strong> la communauté Apache.<br />

Jetspeed est un portail écrit en Java. Il est<br />

basé sur Pluto qui est l’implémentation <strong>de</strong><br />

référence du conteneur <strong>de</strong> portlets défini<br />

par la spécification JSR 168. Jetspeed supporte<br />

le déploiement à chaud <strong>de</strong> portlets packagés<br />

sous forme <strong>de</strong> War. Des informations plus<br />

détaillées sur Jetspeed sont accessibles sur le<br />

site : http://portals.apache.org/.<br />

Nous allons utiliser la distribution binaire <strong>de</strong><br />

Jetspeed disponible à l’adresse :<br />

http://portals.apache.org/download.html<br />

La version utilisée pour cet <strong>article</strong> est : jetspeedcurrent-Tomcat-5.5.9.zip.<br />

Elle utilise Tomcat<br />

comme serveur Web.<br />

Il suffit d’extraire le zip dans un répertoire que<br />

l’on appellera dorénavant %JETSPEED_<br />

HOME%, <strong>de</strong> démarrer la base <strong>de</strong> données intégrée<br />

avec la comman<strong>de</strong> suivante (sous<br />

Windows) :<br />

$ %JETSPEED_HOME%\<br />

jetspeed-database\start-database.bat<br />

Et <strong>de</strong> démarrer le serveur Web avec la comman<strong>de</strong><br />

suivante :<br />

$ %JETSPEED_HOME%\jakartatomcat-5.5.9\bin\startup.bat<br />

Finalement, en ouvrant un navigateur à l’adresse<br />

http://localhost:8080/jetspeed, nous pouvons<br />

nous connecter au portail comme un utilisateur<br />

invité. En nous authentifiant sur le portail<br />

avec l’utilisateur ‘admin’, mot <strong>de</strong> passe<br />

‘admin’, il nous est maintenant possible d’accé<strong>de</strong>r<br />

à toutes les options du portail.<br />

Notre connaissance <strong>de</strong> Jetspeed est maintenant<br />

suffisante pour nous permettre <strong>de</strong> développer<br />

et <strong>de</strong> tester un portlet.<br />

Un portlet pour afficher la date<br />

et l’heure<br />

Le but <strong>de</strong> notre portlet <strong>de</strong> test sera d’afficher<br />

la date et l’heure au moment <strong>de</strong> l’affichage <strong>de</strong><br />

la page.<br />

Pour développer un portlet, il est nécessaire<br />

<strong>de</strong> possé<strong>de</strong>r la librairie contenant les classes<br />

et interfaces <strong>de</strong> l'API, elle est disponible ici :<br />

http://jcp.org/aboutJava/communityprocess/fina<br />

l/jsr168/in<strong>de</strong>x.html<br />

La classe SimpleDateTimePortlet<br />

Comme tout portlet, notre classe doit implémenter<br />

l’interface javax.portlet.Portlet. Il existe<br />

dans l’API une classe GenericPortlet qui fournit<br />

un squelette <strong>de</strong> base pour créer un portlet.<br />

Cette classe met à disposition trois métho<strong>de</strong>s,<br />

doView, doEdit et doHelp, qui permettent <strong>de</strong><br />

générer directement le contenu <strong>de</strong>s mo<strong>de</strong>s <strong>de</strong><br />

base du portlet. Nous allons donc surcharger<br />

la métho<strong>de</strong> doView :<br />

public void doView(Ren<strong>de</strong>rRequest request,<br />

Ren<strong>de</strong>rResponse response) throws<br />

PortletException, IOException {<br />

System.out.println("SimpleDateTime<br />

Portlet - doView");<br />

// on formate la date courante avec le bon<br />

format<br />

SimpleDateFormat simpleDateFormat = new<br />

SimpleDateFormat("dd.MM.yyyy HH:mm:ss");<br />

String dateTime = simpleDateFormat.<br />

format(new Date());<br />

response.setContentType("text/html");<br />

PrintWriter writer = response.getWriter();<br />

writer.write("");<br />

writer.write(" ");<br />

writer.write(" ");<br />

Programmez n°85 51 avril 2006<br />

}<br />

writer.write(" " + dateTime);<br />

writer.write(" ");<br />

writer.write(" ");<br />

writer.write("");<br />

writer.close();<br />

Comme on peut l’observer, la métho<strong>de</strong> doView<br />

affiche <strong>de</strong> gran<strong>de</strong>s similarités avec les<br />

métho<strong>de</strong>s doGet et doPost <strong>de</strong>s servlets.<br />

L’utilisation d’un objet PrintWriter permet<br />

d’écrire dans le flux retourné au portail. Ce flux<br />

sera ensuite agrégé avec celui <strong>de</strong>s autres portlets<br />

pour former une page HTML complète.<br />

Cette métho<strong>de</strong> met en évi<strong>de</strong>nce le même problème<br />

que les servlets avant l’arrivée <strong>de</strong>s JSPs.<br />

L’écriture du co<strong>de</strong> HTML est très peu aisée et<br />

nécessite une recompilation du portlet en cas<br />

<strong>de</strong> modification.<br />

Pour ce portlet, nous allons nous arrêter là. Le<br />

seul mo<strong>de</strong> d’affichage sera ‘view’, il n’y aura<br />

pas <strong>de</strong> page d’ai<strong>de</strong> ou <strong>de</strong> configuration par<br />

souci <strong>de</strong> simplicité. Les métho<strong>de</strong>s init et <strong>de</strong>stroy<br />

on été surchargées uniquement pour afficher<br />

le démarrage et la fin du portlet dans le<br />

log du serveur.<br />

Pour compiler ce portlet, il est nécessaire d’ajouter<br />

la librairie portlet.jar dans le classpath.<br />

Le fichier portlets.xml<br />

Ce fichier est fait pour décrire les portlets qui<br />

vont être déployés dans le portail sous forme<br />

d’une application Web.<br />

<br />

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!