jeudi 28 février 2008

Utiliser la JConsole avec tomcat

JConsole est un utilitaire fourni avec le JDK. Il permet de voir l'état d'une machine virtuelle et il est particulièrement utile lorsqu'il s'agit d'effectuer le diagnostic de performance d'une application.

Pour une application Web, il faut observer le tomcat. Pour ce faire, on crée dans le répertoire bin un fichier setenv.sh en ajoutant la ligne suivante :

if [ "$1" = "start" ]; then
export JAVA_OPTS="-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=50001 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false"
fi



Ou bien sous windows dans setclasspath (de Tomcat 6.0)
set JAVA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=50001 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

Ensuite il faut lancer JConsole et se connecter sur la machine à observer sur le port 50000. Bien entendu, il est possible de sécuriser l'accès à ces informations.


-verbose:class permet d'afficher d'ou sont chargée les différentes classes.

Journalisation distante avec log4j

La journalisation distante est particulièrement utile pour voir les log dans les environnement de recette et/ou de production.
Sur log4j on ajoute un traceur remote.


log4j.rootLogger=INFO, stdout, REMOTE

log4j.appender.REMOTE=org.apache.log4j.net.SocketAppender
log4j.appender.REMOTE.RemoteHost=mydisplayloghost
log4j.appender.REMOTE.Port=4560




Chainsaw est le client. Il faut créer un SocketReceiver.

Téléchargable à cette URL : http://logging.apache.org/chainsaw/download.html

mardi 26 février 2008

Utilisation de cargo

Configuration du plugin en mode local et remote
Voici la ligne à insérer dans le pom.xml
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<configuration>
<configuration> (Indique ou sont déployés les war)
<type>existing</type> (Le type par defaut est standalone, c'est à dire que les repertoire de deploiement est créé s'il n'existe pas)
<home>/opt/tomcat/</home> (Nécessaire dans le cas d'un existing)
</configuration>
<container>
<containerId>tomcat5x</containerId>
<home>/opt/tomcat/</home> (Home indique ou trouver le container (le moteur))
</container>
</configuration>
</plugin>


Pour pouvoir déployer sous un chemin spécifique, indépendamment des version, il faut créer le fichier META-INF/context.xml et affecter le nom d'application que l'on souhaite.

<Context path="/gestion" />

mardi 19 février 2008

Utiliser JMeter à travers un proxy

Dans le fichier jmeter.bat ajouter à la ligne de commande les paramètre -H et -P pour l'hôte et le port de proxy.

%JM_START% %JM_LAUNCH% %JVM_ARGS% %ARGS%
-jar "%JMETER_BIN%ApacheJMeter.jar"
%JMETER_CMD_LINE_ARGS% -H hostname -P 80

Tester un Web Service à l'aide de JMeter

Pour tester un Web service à l'aide de JMeter. Il est possible de se servir soit d'un appel SOAP (C'est à dire que la couche d'abstraction Web Service n'est pas utilisée) soit d'utiliser les service en version Beta de test d'un Service Web

Ce post décrit la méthode utilisant un type SOAP

Dans le scénario ajouter un échantillon de Requete SOAP/XML-RPC pour ne pas

Le corps du message est le suivant, il peut être récupéré en mode debug dans une IDE. Il s'agit du SOAPEnvelope du requestMessage du Message envoyé dans le call. Mis le plus simple consite à utiliser le moniteur de AXIS pour voir la requête qui est envoyée.

java -cp axis.jar org.apache.axis.utils.tcpmon


Le SOAP Enveloppe ressemble à ceci.

<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>
<soapenv:Body>
<ns1:RechercherListeDossiers
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns1="http://www.agriculture.gouv.fr/AIDA/2007">
<identifiant xsi:type="xsd:string">
${pacage}</identifiant>

<typeIdentifiant xsi:type="xsd:string">
PACAGE
</typeIdentifiant>

<annee xsi:type="xsd:string">
0</annee>
</ns1:RechercherListeDossiers>
</soapenv:Body>
</soapenv:Envelope>

vendredi 1 février 2008

Deployer avec les sources à l'aide de maven

Cette commande effectue le javadoc et la mise à disposition des sources.
mvn -DperformRelease=true deploy