Ça y est, le serveur d’application Ohm Force est passé sous GlassFish 2.
Maintenant le serveur est organisé avec :
- nginx en frontal, configuration simple et courte,
- PHP en FCGI pour le site vitrine de GForceSoftware,
- GlassFish pour l’hébergement d’Ohm Force, du site magasin de GForce (c’est le même code) (des applis Struts/OJB/Spring) et du site de VDM, une appli jRuby on Rails.
- le tout connecté à un PostgreSQL 8.
Avant le setup était globalement le même, mais avec Tomcat 6.
GlassFish
Plutôt agréable à utiliser. C’est une grosse machinerie qui se laisse manipuler assez facilement. Toutefois la doc est vraiment volumineuse, et rien que chercher les infos dedans va prendre du temps.
Au cours du “portage” depuis Tomcat, j’ai utilisé 2-3 trucs :
touch .reload
Ca force GlassFish à recharger la webapp, si c’est fait à la racine du répertoire de celle-ci. Il faut avoir configurer GlassFish pour autoriser l’autoriser.
C’est plus agréable au final que la méthode automatique de Tomcat. On a le droit de choisir quand ça arrive :)
Par contre ce redéploiement change la conf des webapp dans le domain.xml
asadmin set server.http-service.virtual-server.server.property.allowLinking=true
Permet d’utiliser des liens symboliques dans les webapps servies par le serveur virtuel server.
~/.asadminpasset~/.asadmintruststore
Ces fichiers stockent les identifiants pour administrer GlassFish via asadmin.
asadmin deploydir <i>rep</i>
Déploie ou redéploie la webapp dans le répertoire rep.
$GLASSFISH_ROOT/domains/domain1/config/domain.xml
Le fichier de configuration, celui modifié par l’interface d’admin. Evidemment, il faut redémarrer le serveur après une modification.
$GLASSFISH_ROOT/domains/domain1/lib/
Les jars placées ici sont accessibles dans tous les classloaders du domaine. Pour pouvoir utiliser les datasources avec PostgreSQL, on place la jar du driver dans le sous-repertoire ext/ (et pas databases/!)
Attention …
GlassFish a tendance à cacher les fichiers des webapps $GLASSFISH_ROOT/domains/domain1/generated.
Faire un rsync entre deux serveurs pour synchroniser le répertoire de glassfish, c’est une mauvaise, très mauvaise idée. Les webapps ont récupéré la configuration de l’autre serveur, et les droits.
Les trucs biens
GlassFish semble vraiment plus solide que Tomcat. Il fait tourner les 3 webapp sans problème, alors que Tomcat ne supportait pas d’avoir l’appli jRuby on Rails, et crashait avec un vilain problème de mémoire.
L’interface d’admin … vraiment top. Quel changement ! J’utilisais Probe sur Tomcat, mais c’est pas aussi bien :)
Les trucs louches
Au démarrage, la présence de l’appli jRuby on Rails fait pomper au serveur 99% des ressources pendant plusieurs minutes. Je n’ai pas encore réussi à comprendre pourquoi … surtout qu’après on redescend à une charge tout à fait raisonnable. Mais j’aimerai comprendre …