Déployer une Enterprise Application sur GlassFish V2.1.1 avec JSF 2.0 sur le port 80

J’ai récémment eu envie d’expérimenter un petit serveur GlassFish sous Debian pour me faire une Enterprise Application tournant dessus (voire plusieurs). Première désillusion, GlassFish V3 ne supporte pas encore le déployement d’Enterprises Applications. Je me suis donc résigné à utiliser GlassFish V2.1.1, proposant cette fonctionnalité.

Voyons tout cela plus en détail en commençant par installer GlassFish.

Installation de GlassFish

La première étape consiste à installer la dernière version (6) du JDK disponible sur le site de Sun. J’ai pris la version non rpm, à savoir jdk-6u21-linux-i586.bin. Une fois le fichier .bin récupéré, il ne vous reste qu’à l’installer. Pour cela rien de plus simple :

1
$ sh jdk-6u21-linux-i586.bin

sh étant ici mon shell, si vous en utilisez un autre, mettez le votre, comme csh si le votre est C-shell.

Il vous faudra en plus créer la variable d’environemment JAVA_HOME. Mon JDK est installé dans /usr/lib/jdk6.0_21/. Pour la rendre disponible pour tous les utilisateurs, éditez /etc/profile afin d’y ajouter.

1
2
export JAVA_HOME=/usr/lib/jdk6.0_21
export PATH=$PATH:/usr/lib/jdk6.0_21/bin

Redémarrez votre session pour prendre en compte les nouvelles variables. Voilà, le JDK est maintenant installé. Passons enfin à GlassFish.

Il faut tout d’abord récupérer la version 2.1.1 de GlassFish sur le site officiel. Téléchargez le jar pour linux dans la partie fichiers binaires.

La procédure d’installation est décrite sur le site, la voici néamoins en français.

Dans le dossier où est téléchargé le jar, lancez les commandes :

1
2
3
4
$ java -Xmx256m -jar filename.jar
$ cd glassfish
$ chmod -R +x lib/ant/bin
$ lib/ant/bin/ant -f setup.xml

GlassFish est maintenant installé. Plutôt simple non ? Pour tester, vous pouvez lancer dans le dossier bin de GlassFish la commande :

1
$ ./asadmin start-domain

Rendez vous ensuite sur http://ipdevotreserver:4848/, vous tombez sur le panneau d’administration de GlassFish. Les identifiants par défaut sont pour le login admin et adminadmin pour le mot de passe.

Passer à JSF 2.0

La version installée avec GlassFish V2.1.1 est la 1.2. Pour passer à la version 2.0, rien de plus simple :

  • Téléchargez les fichiers binaires de JSF 2.0 sur le site officiel
  • Faites une sauvegarde de jsf-impl.jar dans le dossier GF_HOME/lib
  • Copiez les nouveaux jsf-api.jar et jsf-impl.jar dans GF_HOME/lib
  • Editez le fichier GF_HOME/domains/[nom-du-domaine]/config/domain.xml et ajouter ‘classpath-prefix= »${com.sun.aas.installRoot}/lib/jsf-api.jar » à la balise <java-config>
  • Redémarrez le serveur

Le fichier XML ressemble maintenant à ça :

1
2
3
4
<java-config 
classpath-prefix="${com.sun.aas.installRoot}/lib/jsf-api.jar" ... >
  ...
</java-config>

Pour vérifier que tout fonctionne, lancez tout simplement la console d’administatrion GlassFish (http://localhost:4848/) qui est une application JSF.

Écouter le port 80

Pour écouter le port 80, il vous faut ajouter un http-listener, soit par l’interface graphique, soit en ligne de commande.

Note : pour pouvoir mettre un port de 1 à 1024, vous devez lancer GlassFish en tant que root :

1
# asadmin start-domain

Sur l’interface graphique, rendez-vous dans Common Tasks ? Configuration ? HTTP Service ? HTTP Listeners puis faîtes « New ». Donnez lui un nom puis mettez 80 dans Listener Port. Next puis finish.

Par un terminal, lancez les commandes suivantes :

1
2
3
# asadmin
asadmin > create-http-listener --listeneraddress  address
\ --listenerport listener_port  --defaultvs virtual_server listener_id

(\ étant un retour à la ligne, il s’agit bien d’une seule et unique commande)

Par exemple, dans notre cas pour le port 80, on écrira :

1
2
asadmin > create-http-listener --listeneraddress 0.0.0.0 
\ --listenerport 80 --defaultvs server http-listener-3

En vous rendant sur http://ipdevotreserveur/, vous aurez la page par défault de GlassFish comme quoi votre serveur tourne.

Déployer l’Enterprise Application

Pour mettre en ligne notre application, nous allons utiliser la console d’administatrion GlassFish.

  • Sur le panneau principal Common Tasks, aller dans la partie Deploy Enterprise Application (.ear).
  • Choisissez la location selon si vous voulez uploader ou utiliser le même emplacement du projet.
  • Cliquez sur OK.

Vous accédez maintenant à votre application grâce à http://localhost/application_name-war/