Tous les articles par Bruno

La gestion des exceptions en Java

La gestion des exceptions en Java pose parfois quelques problĂšmes aux dĂ©veloppeurs. Cet article a le mĂ©rite d’expliquer certaines bonnes mĂ©thodes pour les gĂ©rer. A lire sans rĂ©serve.

Le lien : Best Practices for Exception Handling

Et un article intéressant sur la gestion des exceptions pour le traitement des erreurs de validation

Le lien : Using exception for server-side validation in JSP

RegExp pour valider une adresse mail

Une adresse email doit respecter la RFC822. Il y a plein de choses Ă  vĂ©rifier, alors pourquoi ne pas dĂ©lĂ©guer ca Ă  une RegExp – ou Expression ReguliĂšre ? Sur le lien proposĂ© dans cette brĂšve, vous trouverez la RegExp pour valider un email d’aprĂšs la RFC822… Attention, c’est impressionnant, j’avais encore jamais vu d’expression si longue… Chapeau bas Ă  l’auteur !

Le lien : La RegExp

Applications Java serveur nécessitant un serveur X

Comment se passer d’un serveur X pour une application java qui en veut un alors qu’elle tourne sur un serveur qui n’est pas sensĂ© en avoir : vous me suivez ?

Des applications java peuvent avoir besoin d’un serveur X pour faire du rendu de dessin. C’est le cas par exemple en cas d’utilisation de la bibliothùque de rendu de graphiques JChart ou avec JasperReport. On aura par exemple une stacktrace du genre :

java.lang.InternalError

Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.sun.awt.X11GraphicsEnvironment::initDisplay (native)

sun.awt.X11GraphicsEnvironment::<clinit> ( X11GraphicsEnvironment.java: 134 )

java.lang.Class::forName0 (native)

java.lang.Class::forName ( Class.java: 141 )

java.awt.GraphicsEnvironment::getLocalGraphicsEnvironment ( GraphicsEnvironment.java: 62 )

net.sf.jasperreports.engine.util.JRGraphEnvInitializer::initializeGraphEnv ( JRGraphEnvInitializer.java: 58 )

...

Cependant, sous les serveurs de production, on lance rarement un serveur X. Il faut donc utiliser soit :
– un serveur virtuel xvfb
– l’option -Djava.awt.headless=true [1] si on utilise Java 1.4 ou supĂ©rieur

PS : Cette astuce a été trouvée dans la doc de jCharts

[1] ou dans le code avec System.setProperty(“java.awt.headless”,”true”) ;

Manipuler le dump d’une base PostgreSQL

Pour toutes les manipumations qui suivent, il faut ĂȘtre connectĂ© en tant qu’utilisateur postgres :

%> su - postgres

Dumper une base

La commande pg_dump permet d’afficher la structure d’une base nom_de_la_base ainsi que ses donnĂ©es sur la sortie standard.

En utilisant une redirection de la sortie standard vers un fichier, on réalise donc une copie de la base.

%> pg_dump -D {nom_de_la_base} > {nom_du_fichier.dump}

RecrĂ©er une base Ă  partir d’un dump

S’il y a besoin de restaurer une base, ou d’en construire une nouvelle à partir d’une base existante, il faut utiliser un fichier de dump.

Dans un premier temps, effacer la base existante si besoin :

%> dropdb {nom_de_la_base}

Dans un deuxiÚme temps, recréer ou créer la base :

%> createdb {nom_de_la_base}

Dans un troisiĂšme temps, importer dans la base le fichier de dump :

%> psql -e {nom_de_la_base} < {nom_du_fichier.dump}

Pour importer le dump, on peut aussi le faire en étant connecté à la base (utile lorsque le postmaster demande une authentification par mot de passe [1]) en utilisant la commande psql :

nom_de_la_base=# \i {nom_du_fichier.dump}

Ainsi la base est créée et initialisée avec la structure et les données déclarées dans le fichier de dump. Celui-ci étant en mode texte il est trés facile de le modifier avec un éditeur.

PS : Dans tous les cas, pour que cela fonctionne, il faut que le serveur de base de donnĂ©s PostgreSQL fonctionne sur la machine. C’est une erreur courante que d’oublier de le dĂ©marrer.

[1] car dans ce cas lĂ , on ne peut pas faire la redirection de l’entrĂ©e standart