Rechercher dans ce blog

vendredi 8 janvier 2010

Datasources: Pertes de connection

Un problème récurant que je vois dans les applications WEB est la perte de connexion à la base de données. Une solution pour détecter les fuites, utilisée dans mes projets, est de fournir un contrôleur WEB qui, en fonction de paramètres, indique l'état des datasources. C'est utile en dev, mais surtout en prod, lorsqu'on a une fuite qui ne se produit qu'en prod, et que l'on souhaite voir l'état des datasources, mais que l'on n'a pas d'accès JMX ou wlst.

En pratique, j'ai un contrôleur Spring dans lequel j'injecte mes datasources.
L'étape suivante est de récupérer le vrai objet Datasource:

   public static BasicDataSource getBasicDataSource(DataSource dataSource) {
        Object obj = dataSource;

        // Try to get proxied instance
        Method method = ReflectionUtils.findMethod(dataSource.getClass(),
                "getTargetSource");
        if (method != null) {
            obj = ReflectionUtils.invokeMethod(method, dataSource);
        }

        // Try to get proxied instance
        if (obj instanceof JndiObjectTargetSource) {
            JndiObjectTargetSource source = (JndiObjectTargetSource) obj;
            obj = source.getTarget();
        }

        if (obj instanceof BasicDataSource) {
            BasicDataSource bds = (BasicDataSource) obj;
            return bds;
        }
        return null;
    }

   
Ensuite, j'écrit les paramètres dans la réponse HTTP, au format JSON:


Cette solution permet d'afficher le nombre de connexions actives, et le format JSON permet de le parser par un script, par exemple pour l'integrer dans Nagios ou autre système d'alerte.

Pour chercher des connection leaks, je recommande l'utilisation de l'excellent FindBugs.

jeudi 7 janvier 2010

Book pre-review: Career 2.0: Take Control Of Your Life

Suite à la lecture de "Ship it" (voir précédant blog), je me suis penché sur le travail de Jared Richardson et j'ai découvert son nouveau livre: "Career 2.0: Take Control of Your Life". Ce livre est destiné à un public de développeurs, mais également applicables à tout le monde.
D'après les reviews, ce livre propose des recettes afin de se définir des objectifs, de s'y tenir, et finalement de progresser dans nos choix de carrière comme dans la vie. Il prend la métaphore d'un conducteur qui rentre dans sa voiture; s'il ne sais pas où il va, même si il a une bonne voiture, il n'arrivera jamais à son but.
Dans son livre, il parle d'outils comme le wiki ou les mindmaps, propose des échanges d'informations comme le lunch-n-learn, conférences, reviews, et suggère d'apprendre chaque jour, par exemple en suivant un tutorial par jour.
Son livre a d'excellents feedbacks dans les forums, et sera à coup sûr dans la liste de mes prochaines lectures...

"Career 2.0: Take Control Of Your Life"
Jared Richardson

Book review: "Ship it !", A practical guide to successful software projects

"Ship it!" est un livre destiné aux développeurs qui souhaitent améliorer ce qui se passe dans leur projet. Ce livre très bien réalisé explique par des situations simples comment y remédier, par exemple il parle de best-practices que tout bon développeur devrait appliquer: utiliser un système de build, l'intégrer dans un système d'integration continue, utiliser un système de contrôle de version comme SVN...
Les situations de ce livre sont variées: que faire quand un développeur prétend que "ça marche chez lui", ou s'il ne veut pas développer de tests unitaires, ou que faire si vous avez reçu de votre supérieur un projet non testé et qui ne marche pas...
Le livre parle également de ce qui peut se passer dans l'équipe du projet pour améliorer la communication, la vue d'ensemble: daily meeting, publication d'informations, deadlines claires et affichées pour tous, désigner un lead technique...
Ce livre est définitivement un "Must read" pour tous les développeurs.

Références:
"Ship it!" A practical guide to successful software projects,
Jared Richardson, William Gwaltney Jr.
Collection "The Pragmatic Programmers",
ISBN 0-9745140-4-7

Hello, blogger world

Bienvenue dans mon nouveau blog. Celui-ci sera consacré à partager mon expérience, mes découvertes, mes reflexions dans les domaines usuelles qui me cotoyent: informatique, balades, musique... Un blog c'est l'occasion de partager mais également de recevoir des informations sur les entrées du blog, donc n'hésitez pas à commenter les entrées pour réagir ou simplement dire si vous avez aimé ou pas....