30 secondes avec Glassfish v3
Retour rapide sur Glassfish, le serveur d’app dont on entend parler un peu partout.
1. Intégration avec Maven : semi-Echec
Glassfish n’a apparemment pas de support de Maven officiel. Il existe quelques plugins Maven mais d’après cet article, rien de vraiment fonctionnel à part le plugin de l’auteur.
J’ai donc essayé le plugin Maven « Asadmin » qui m’a permis de déployer un War Wicket dans Glassfish. Pour info, seule la version 0.3-snapshot » de Asadmin a fonctionné.
Une autre solution serait de démarrer soi-même un Glassfish via l’API Embedded (voir ce commentaire d’Alexis MP). Mais apparemment, il s’agit toujours de déployer un War. Il faut donc générer à chaque changement de code.
Pour résumer :
- Pas de plugin Maven pour Glassfish aussi facile d’accès que celui de Jetty ;
- Mais possibilité de déployer un War en ligne de commande facilement.
2. Installation : succès
Le site du projet a plusieurs liens vers différents guides de démarrage qui donnent à peu près les mêmes infos.
- Dézipper le zip ;
- Lancer $GLASSFISH_HOME/bin/asadmin start-domain ;
- Pour tester, copier l’application hello.war dans le répertoire autodeploy ;
- En quelques secondes, l’application devient accessible ainsi que la console d’admin.
Aucun problème d’installation, Glassfish est très rapidement mis en place.
Le démarrage est très rapide mais si on suppose vite que plein de choses se passent en tâche de fond (comme le précise la console au lancement).
3. Intégration à Eclipse : succès
L’ajout d’un serveur dans le WTP d’Eclipse propose de télécharger des « server adaptor » additionnels, chose requise pour utiliser Glassfish. Ici encore, la documentation est détaillée avec des captures d’écran.
Mon impatience a failli me coûter cher. La liste a mis plusieurs minutes pour trouver le connecteur Glassfish. Si ça vous arrive, allez prendre un café en attendant.
Une fois le serveur ajouté, le déploiement sur Glassfish d’un projet Web prend quelques secondes, démarrage du serveur compris. Une modification d’une classe Java est prise en compte quasiment immédiatement.
Conclusion
Glassfish est facilement installable. Sa mise en place dans un projet est rapide au travers d’un IDE. Il démarre en quelques secondes, aussi vite que Jetty.
Pourtant sur l’aspect configuration et intégration à Maven, Jetty est encore imbattable (plugin Maven au Top et simple fichier de config pour les dataSources).
Il m’a manqué du temps pour tester le rechargement à chaud des classes et la persistance des sessions mais si c’est aussi facile que le reste, je l’adopte pour mes dév.
January 16th, 2009 at 17:53
Merci pour le plug Eclipse:)
J’ai developpe le plugin et la doc aussi:-)
Pour les download perf, c’est lie a la vitesse de java.net et de https, pas terrible…
Comment est le support Jetty sur Eclipse?
Ludo
January 16th, 2009 at 19:14
A vrai dire, pas besoin d’intégrer Jetty à Eclipse.
Jetty se lance en ligne de commande : mvn jetty:run.
Il utilise le classpath d’Eclipse donc dès qu’une modification est faite, il se relance. Il se redémarre en quelques secondes.
Mais il y a deux inconvénients :
- pas de persistance des Sessions à la Tomcat/Glassfish donc si tu étais authentifié, tu dois le refaire à nouveau (perte du contexte en cours) ;
- Jetty se vautre en OOM au bout de vingt/trente relances. Ca laisse de la marge mais c’est énervant de temps en temps quand on abuse du ctrl+s sous Eclipse (qui déclenche un redémarrage de Jetty).
Donc on utilise Jetty en ligne de commande, pas besoin de construire un War ou quoi que ce soit.
Je faisais la même chose avec Tomcat il y a quelques années. Le context de ma WebApp pointait vers mon workspace Eclipse.
Tom
December 30th, 2009 at 17:04
Maven, outre tout le bien dont on peut en dire, n’est ni un standard ni une obligation.
Glassfish est une implémentation de Java EE 5 (maintenant 6). Pas Jetty ou Tomcat. Les points de comparaison sont limités.
Cet article peut être utile pour utiliser Glassfish avec Maven. Mais le manque de support pour lancer Glassfish via Maven ne m’apparaît pas comme un souci. Est-ce à Glassfish de fournir ce support ?
December 31st, 2009 at 11:33
Bonne question : Glassfish doit-il faciliter la vie du développeur (en parlant d’intégration avec Maven) ?
Pour moi, oui le serveur d’app doit faciliter le travail de tous les corps de métier, équipe de dev compris et non uniquement la prod
Glassfish et Spring TC Server s’oriente vers ce choix :
- démarrage rapide pour accélérer le cycle code/run/test
- intégration aux IDE
- déploiement facile
Reste à voir si c’est à l’équipe Glassfish de proposer ce plugin Maven ou à la communauté.
Par ailleurs, tu as bien raison : Maven n’est pas une obligation.