Installation de glassfish

L’environnement de travail de base sera glassfish 4.1.1 (https://glassfish.java.net) et la base de données H2 (http://www.h2database.com/).

Nous allons commencer par la mise en place et une première étude de glassfish. L’installation s’appuie sur http://www.physics.usyd.edu.au/~rennie/glassfish.html.

Nous allons utiliser Payara (http://www.payara.co/) qui propose du support commercial pour glassfish. Télécharger et décompresser glassfish/payara à la racine de votre compte :

USER
wget http://bit.ly/1Gm0GIw -O payara41.zip

Ajouter les variables suivantes dans votre .bashrc, zshrc ou .tcshrc

USER
export GLASSFISH_PARENT=/opt/payara41 export GLASSFISH_HOME=${GLASSFISH_PARENT}/glassfish export PATH=${GLASSFISH_PARENT}/bin:${GLASSFISH_HOME}/bin:${PATH}
Vous pouvez démarrer le domaine par défaut fournit avec glassfish
USER
asadmin start-domain domain1

La partie externe du domaine sera accessible http://localhost:8080/ et là https://localhost:8181/, une console d’administration est disponible ici https://localhost:4848/

Important pour la suite : Les log sont visibles ici ~/payara41/glassfish/domains/domain1/logs/server.log

Stopper glassfish

USER
asadmin stop-domain domain1

Changer le mot de passe principal par défaut (changeit)

USER
asadmin change-master-password –savemasterpassword=true domain1

Ce mot de passe donne aussi accès aux deux trousseaux de clés par défaut

USER
keytool -list -v \ -keystore $GLASSFISH_HOME/domains/domain1/config/keystore.jks keytool -list -v \ -keystore $GLASSFISH_HOME/domains/domain1/config/cacerts.jks

Démarrer glassfish

USER
asadmin start-domain domain1

Changer le mot de passe administrateur (vide par défaut)

USER
asadmin change-admin-password

Pour ne pas avoir à saisir le mot de passe systématiquement (export vers ~/.gfclient/pass):

USER
asadmin [–host localhost –port 4848] login

Optionnel mais fortement conseillé. Générer des certificats propres à ce serveur (ceux par défaut sont connus de tous). Le mot de passe demandé est le mot de passe principal. L’option dname peut/doit être personnalisée.

Stopper glassfish

USER
asadmin stop-domain domain1

Indiquer le mot de passe et les paramètres du certificat (à adapter à votre cas) à créer :

USER
export MYPASS=... export \ DNAME="CN=serverDomainName,OU=dptinfo,O=UTLN,L=Toulon,S=PACA,C=FR"

Supprimer le certificat par défaut (s1as), en générer un nouveau et l’installer :

USER
cd ${GLASSFISH_HOME}/domains/domain1/config/ keytool -delete -alias s1as -keystore keystore.jks -storepass $MYPASS keytool -delete -alias glassfish-instance \ -keystore keystore.jks -storepass $MYPASS keytool -genkeypair -alias s1as -dname $DNAME -keyalg RSA \ -keysize 2048 -validity 3650 -keystore keystore.jks -keypass $MYPASS \ -storepass $MYPASS keytool -genkeypair -alias glassfish-instance -dname $DNAME -keyalg RSA \ -keysize 2048 -validity 3650 -keystore keystore.jks -keypass $MYPASS \ -storepass $MYPASS keytool -exportcert -alias s1as -file s1as.cert -keystore keystore.jks \ -storepass $MYPASS keytool -exportcert -alias glassfish-instance \ -file glassfish-instance.cert \ -keystore keystore.jks -storepass $MYPASS keytool -delete -alias s1as -keystore cacerts.jks -storepass $MYPASS keytool -delete -alias glassfish-instance -keystore cacerts.jks \ -storepass $MYPASS keytool -importcert -alias s1as -file s1as.cert \ -keystore cacerts.jks -storepass $MYPASS
A la question Trust this certificate? [no]: Répondre yes (ou oui)

USER
keytool -importcert -alias glassfish-instance \ -file glassfish-instance.cert -keystore cacerts.jks \ -storepass $MYPASS ''Trust this certificate? [no]:'' ** Répondre yes (ou oui) **

USER
rm s1as.cert glassfish-instance.cert

Démarrer glassfish

USER
asadmin start-domain domain1

Activer https

USER
asadmin set server-config.network-config.protocols.protocol.admin-listener.security-enabled=true asadmin enable-secure-admin

Pour permettre à glassfish de se connecter à diverses bases de données, il faut ajouter les drivers jdbc dans ${GLASSFISH_HOME}/lib/ et relancer le serveur.

Par exemple pour mysql si vous avez utilisé maven :

USER
cp ~/.m2/repository/mysql/mysql-connector-java/5.1.21/mysql-connector-java-5.1.21.jar ${GLASSFISH_HOME}/domains/domain1/lib/ext

ou pour h2

USER
cp ~/.m2/repository/com/h2database/h2/1.4.185/h2-1.4.185.jar ${GLASSFISH_HOME}/domains/domain1/lib/ext

Il faut ensuite créer des ressources et des pool de connections. Cela peut être fait en ligne de commande.

Pour Mysql

USER
asadmin create-jdbc-connection-pool --datasourceclassname com.mysql.jdbc.jdbc2.optional.MysqlDataSource --restype javax.sql.DataSource --property user=root:password=test:DatabaseName=test:ServerName=localhost:port=3306 mysql-pool asadmin ping-connection-pool mysql-pool asadmin create-jdbc-resource --connectionpoolid mysql-pool jdbc/mysql-pool asadmin list-jdbc-resources

Pour H2

USER
asadmin create-jdbc-connection-pool --datasourceclassname org.h2.jdbcx.JdbcDataSource --restype javax.sql.DataSource --property user=sa:password=test:URL='jdbc\:h2\:tcp\://localhost/~/test' h2-pool asadmin ping-connection-pool h2-pool asadmin create-jdbc-resource --connectionpoolid h2-pool jdbc/h2-pool asadmin list-jdbc-resources

Plus d’explications ici : http://www.payara.co.uk/an_introduction_to_connection_pools_in_glassfis. Le détail pour mysql est donné ici : http://dev.mysql.com/doc/connector-j/en/connector-j-usagenotes-glassfish-config.html et pour h2 ici : http://www.h2database.com/html/tutorial.html#using_toplink

Pour mettre à jour glassfish ou installer des modules complémentaires (Comme le tutoriel JavaEE de Oracle). Attention, cela ne fonctionne pas avec payara.

USER
${GLASSFISH_HOME}/bin/updatetool

Glassfish est fourni avec la base de données Derby, pour supprimer les connections par défaut :

USER

asadmin delete-jdbc-connection-pool --cascade=true DerbyPool
asadmin delete-jdbc-connection-pool --cascade=true __TimerPool

Les options de la JVM utilisée peuvent être listées :

asadmin list-jvm-options

Et modifiées, par exemple passage du mode client à serveur, augmentation de la mémoire (par défaut avec Payara), et limitation des informations http (inutile derrière un reverse proxy) : asadmin delete-jvm-options – -client asadmin create-jvm-options – -server asadmin create-jvm-options -Xmx512m asadmin create-jvm-options -Xms512m asadmin create-jvm-options -Dproduct.name=

—- dataentry page —- type : Howto technologie_tags : Java, JavaEE, Glassfish, Payara