article de presse - Cap Data Consulting
article de presse - Cap Data Consulting
article de presse - Cap Data Consulting
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 />