Utiliser log4j pour logger dans Apache Tomcat

Pour nos applications développées en JEE nous avions un sérieux problème de log tomcat qui se remplissaient pour atteindre des tailles critiques mettant en péril le fonctionnement de nos applications. Après des essais, un peu de lecture l’équipe R&D d’Easyflyer a décidée d’abandonner la configuration du moteur JULI installé par défaut dans Tomcat (version 6.0 pour nous), et de remplacer le moteur par log4j.

Voici la procédure à suivre pour installer Log4j dans Tomcat :

 

1. Télécharger les librairies nécessaires

Les librairies nécessaires sont :

  • log4j version >= 1.2.x
  • les jar tomcat-juli-adapters.jar et tomcat-juli.jar.

Les jars tomcat-julixx.jar sont téléchargeables à partir du site Apache Tomcat dans la rubrique download correspondant à votre numéro de version.  Il faut se rendre ensuite dans la rubrique Quick Navigation -> Browse, et se déplacer dans bin?extra.

Continue reading

Utilisation et configuration de jitsi

Avec le déménagement d’Easyflyer nous avons changé de solution de téléphonie contraint et forcé car notre opérateur n’était pas capable de migrer 8 lignes dans les nouveaux locaux, et que le transfert du numéro de téléphone était impossible. Nous avons opté pour une solution 100% OpenSource Asterix hébergée par Virtual Fanatic.

J’ai sauté sur l’occasion pour supprimer mon poste téléphonique et utiliser un softphone. Après plusieurs essai, mon choix c’est porté sur jitsi.

L’installation sur ubuntu est très simple :

Par contre après l’installation, j’ai du affiner les paramètres de la JVM afin d’améliorer la qualité d’écoute et éviter que mon CPU ne « fonde ». Les paramètres de lancement de la JVM sont dans le fichier /usr/bin/jitsi, voici les deux modifications apportées :

La variable CLIENTARGS correspond aux paramètres de lancement de la JVM, la deuxième correspond au choix de la JVM. Dans mon cas j’ai opté pour le jdk officiel d’Oracle, on verra a l’utilisation si j’affine les paramètres.

JVM – Gestion de la mémoire et Garabage Collector

J’ai trouvé un article très intéressant (merci IBM developperworks) sur la gestion de la mémoire native par la JVM dans les environnements Linux et Windows. L’auteur revient sur le système des ardressages mémoires dans un OS, présente la gestion de la heap par la JVM, et le lien avec la mémoire native.

Le lien ici :

http://www.ibm.com/developerworks/linux/library/j-nativememory-linux/index.html?ca=dgr-jw22Linux-JVM&S_TACT=105AGX59&S_CMP=grjw22

 

Déploiement du module de sécurité sous AXIS2

 

Après pas mal de galère, j’ai enfin trouvé comment déployer rampart 1.4 (module de sécurité) dans la servlet axis2.

L’exception obtenue au démarrage de tomcat est :

[ERROR] The rampart-1.4.mar module, which is not valid, caused org/apache/axis2/wsdl/codegen/extension/ModulePolicyExtension
java.lang.NoClassDefFoundError: org/apache/axis2/wsdl/codegen/extension/ModulePolicyExtension

Ce problème est du à l’exclusion du fichier axis2-codegen-1.4.1.jar dans le build.xml de construction de la webapp.

Il suffit de mettre en commentaire cette ligne ou de la supprimer. Le fichier nécessaire est alors intégré dans la webapp axis2.war.

 

Activer les log WebServices dans JBoss

Lorsque l’on travaille sur les WebServices il est souvent utile de voir les messages qui sont échangés entre le client et le server. JBoss logge ces informations dans la catégorie org.jboss.axis.transport.http.AxisServlet.

Pour activer les logs webservices ajouter le logger suivant dans le fichier log4j.xml :

Une petite classe bien utile : Générer des chaînes aléatoires

Comment créer des chaînes aléatoires ? Je mes suis posé la question dernièrement, je commençais à partir sur une solution de génération aléatoire d’entier dans une plage donnée pour les convertir ensuite en caractère. Un truc simple mais fastidieux.
Et j’ai trouvé la classe RandomStringUtils de la librairie Commons Lang du projet Apache Commons.

Le lien vers la javadoc.

Un petit exemple :

public static void main(String[] args) {

for (int i=0 ; i<256; i++)

{

System.out.println(RandomStringUtils.random(64,true,true));

}

}