Présentation

Glassfish est un serveur permettant de déployer ses applications J2EE. Bien qu’il soit disponible sous Ubuntu (au moment où j’écris ces lignes), il ne l’est pas sous Debian. Notre but est donc d’expliquer la manière d’installer un serveur Glassfish sous GNU/Debian.

Installation de glassfishv1 sous Debian

Le point de départ, dans mon cas : un serveur Debian Etch (stable), sur une machine virtuelle. Apparemment seule Debian testing propose quelques bibliothèques Glassfish, il a donc fallu passer à Debian Lenny (testing), pour cela renseignez-vous sur le site officiel de Debian ou sur les canaux IRC . Par ailleurs je doute que cela serve à quelque chose d’installer lesdites bibliothèques https://packages.debian.org/search?searchon=names&keywords=glassfish (Edit 2026 : lien mort, mais vous pouvez voir l’ historique du paquet glassfish dans Debian ), mais comme je l’ai fait en premier et que j’ai désormais quelque chose de fonctionnel, peut être que cela utilise mes bibliothèques.

Installons d’abord Java :

apt-get install sun-java6-jre

Puis les paquets glassfish proposés par Debian :

apt-get install glassfish-javaee glassfish-activation glassfish-jmac-api glassfish-mail glassfish-toplink-essentials glassfish-appserv

NB : Si vous avez des informations sur le réel intérêt des paquets Glassfish proposés par Debian, branche Lenny (testing), n’hésitez pas à m’en informer !

Sur le site officiel de glassfish (anciennement https://glassfish.dev.java.net/, disponible sur WebArchive.org aussi avec l'apparence de l'époque ) existe un fichier .jar installable pour obtenir glassfishv2 par exemple. Les détails de la mise en place du serveur semblent clairs comme de l’eau de roche (pointe d’ironie), à tel point qu’ils ne précisent pas que leur installation se fait en mode graphique… Je dois avouer que pour un serveur, ça “craint” un max ! Sur ma Debian Lenny, pas d’interface graphique (normal pour un serveur vous me direz), aucun moyen de lancer ce fichu installeur Java… passons à une autre méthode, par exemple en extorquant les paquets chez Ubuntu 😊

Récupération de fichiers .deb

Étant donné que les paquets ne sont pas chez Debian, mais chez Ubuntu ; et que justement les paquets Ubuntu sont sous le format .deb, je me suis lancé dans l’installation façon Mac Gyver, en récupérant les .deb suivant :

Tout ceci a été récupéré sur https://old-releases.ubuntu.com/ , il suffit simplement de s’y rendre et prendre les derniers paquets. Évidemment ils n’auront plus la version que j’ai utilisée, donc tentez d’aller à l’adresse suivante pour les retrouver : https://old-releases.ubuntu.com/ubuntu/dists/ puis de séléctionner une des distributions linux, telle que gusty ou hardy, puis multiverse pour parvenir aux versions pré-citées.

Et comment faire pour les récupérer sur notre serveur ?

Tout simplement grâce à la commande wget 😎 ! On fait par exemple ceci pour imq_1.0-1 :

wget https://old-releases.ubuntu.com/ubuntu/pool/multiverse/i/imq/imq_1.0-1_all.deb

Faites cela pour les 4 paquets cités plus haut. Puis passons à l’installation des paquets.

Utilisation des fichiers .deb

Et bien qu’attendez-vous 😕 ? Installez ! Pour cela il faut utiliser la commande dpkg -i :

dpkg -i imq_1.0-1_all.deb

Puis suivez les instructions apparaissant à l’écran.

Faites de même, et en suivant l’ordre suivant, pour les paquets :

Après cela vous devriez avoir une nouvelle commande accessible : asadmin.

Lancement du serveur Glassfish

Bien, nous avons eu ce que nous voulions, le serveur peut être lancé :

/usr/bin/asadmin start-domain domain1

Vous devriez avoir glassfish qui répond quelques lignes positives et miraculeuses signalant le lancement de domain1.

Si ce n’est pas le cas, il semblerait que réduire l’utilisation de la mémoire de 512 à 256 aide. Il faut ainsi ouvrir le fichier de configuration du domaine 1 (domain1), à savoir : /var/lib/sunappserver/domains/domain1/config/domain.xml, et de changer “-Xmx512m” par “-Xmx256m” :

<jvm-options>-Xmx256m</jvm-options>

Puis relancez le serveur à l’aide de la commande asadmin start-domain domain1. Ce devrait désormais aller.

Pour vérifier, allez sur http://ipdevotreserveur:8080/, vous devriez avoir une page d’accueil créée par Sun.

Lancement automatique

Que diriez-vous de lancer glassfish tel un service ? Au même titre qu’Apache, en faisant simplement /etc/init.d/glassfish start.

Ce serait super ! 😆

Première chose, avant d’oublier, installez chkconfig qui nous servira pour obtenir la commande service, chkconfig, et sûrement d’autres non utilisées pour ce tutoriel.

apt-get install chkconfig

Après cela, il faut créer un script, renseignez les actions à effectuer au lancement du service, à son arrêt, au redémarrage, etc.

cd /etc/init.d/
vim glassfish
#!/bin/sh

#
# glassfish Ce script permet de lancer glassfish
#
# chkconfig: - 80 30
# description: Serveur Glassfish
# processname: glassfish
# pidfile: /var/run/glassfish.pid

RETVAL=0

# See how we were called.
case "$1" in
start)
# Start daemons.
echo -n "Démarrage de glassfish: "
/usr/bin/asadmin start-domain domain1
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/glassfish
;;

stop)
# Stop daemons.
echo -n "Arrêt de glassfish: "
/usr/bin/asadmin stop-domain domain1
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/glassfish
;;

restart|reload)
$0 stop
$0 start
RETVAL=$?
;;

status)
/usr/bin/asadmin list-domains --domaindir /glassfish/
RETVAL=$?
;;

*)
echo "Usage: glassfish {start|stop|restart|status}"
exit 1
esac
exit $RETVAL
touch /var/run/glassfish.pid

Testez le script en lançant quelques commandes :

cd /etc/init.d/
./glassfish start
./glassfish status
./glassfish restart
./glassfish stop
./glassfish status
./glassfish nimportequoi

Si tout va bien, créeons le service, nous avons rempli notre script avec une ligne telle que : # chkconfig: - 80 30. Ce qui indique que pour les niveau 2 à 5 compris, glassfish aura la position 80, tandis que pour les niveaux 0, 1 et 6 il aura la position 30.

Pour indiquer au système que nous sommes prêts à instaurer ces règles, nous tapons la commande suivante :

chkconfig --add glassfish

Dès lors les commandes service devraient fonctionner :

service glassfish start
service glassfish status
service glassfish retart
service glassfish stop
service glassfish status

Pour être totalement sûr que cela fonctionne, relancez votre machine, si glassfish est lancé, vous devriez accéder à la page http://localhost:8080/ sans problèmes !

Liens utiles