Archive

Archive for the ‘Non classé’ Category

Les continuations Jetty

15 janvier 2008 1 commentaire

Il y a 4 ans, j’avais été chargé d’une étude sur le « push » en client léger, le but était de pouvoir notifier les utilisateurs d’évènements importants.

Comme le protocole HTTP est basé sur un système de requêtes / réponses, qui s’apparente à du « pull », le serveur ne peut pas déclencher d’évènements en direction du client. L’idée est donc de faire en sorte que le client vérifie régulièrement si le serveur veut lui présenter un évènement.

J’avais implémenté un système de « pooling » HTTP avec une servlet qui se mettait en attente sur un conteneur de messages pour une durée de plusieurs dizaines de secondes avant de retourner une réponse au navigateur qui s’empressait de déclencher une nouvelle requête. Bien sur, l’inconvénient majeur de cette architecture est que chaque utilisateur bloque un Thread coté serveur, ce qui est gourmand en ressources.

Avec les applications AJAX, les besoins de ce type se multiplient. Heureusement les nouvelles implémentations d’I/O Java permettent de ne pas monopoliser un thread par socket. Il est donc possible d’affecter le thread à une autre tache pendant l’attente d’un évènement.

La version 6 du conteneur de servlet Jetty propose une implémentation de cette solution via les Continuations. Cette API permet de suspendre une requête et de libérer le thread. En général, intégrer des spécificités dans un conteneur web est délicat car il y a un risque : on grève la portabilité vers un autre conteneur. Cependant dans ce cas, l’API est utilisable dans un autre conteneur en basculant dans un classique wait/notify qui bloque le thread. De plus, les continuations vont être proposées au groupe de travail sur les Servlet 3.0 .

Une bonne nouvelle pour les applications de type CTI qui pourront se passer d’Applet et autres ActiveX.

Via ongwt.

Websphere MQ en JMS / JNDI

14 janvier 2008 1 commentaire

Petit problème technique rencontré la semaine dernière : Configurer un logiciel pour utiliser Websphere MQ comme provider JMS via JNDI. En effet, le logiciel (propriétaire) ne propose pas d’instancier directement la ConnectionFactory mais demande une factory JNDI, une URL et un nom JNDI.

Après quelques recherches, j’ai trouvé un article chez IBM qui explique qu’il faut télécharger des support pacs (MS0B & ME01)

La factory à utiliser est « com.ibm.mq.jms.context.WMQInitialContextFactory »

L’url est de la forme « hostWebsphereMq:portManager/channel ». Par exemple : « 192.168.0.25:1414/SYSTEM.DEF.SVRCONN »

Le nom de la connectionFactory est le nom du manager MQ

Voici un exemple de code qui envoie un message texte dans Websphere MQ en JMS via JNDI.

	    /* Environement JNDI */
	    Properties env = new Properties();
	    /* Factory fournie par les support pacs */
	    env.put(Context.INITIAL_CONTEXT_FACTORY,  
               "com.ibm.mq.jms.context.WMQInitialContextFactory");
	    /* serveur:port/channel */
	    env.put(Context.PROVIDER_URL, "mymanager:1414/SYSTEM.DEF.SVRCONN");
	    /* Connexion JNDI */
	    Context context = new InitialContext(env);

	    /* Recherche de la connection factory (nom du manager) */
	    QueueConnectionFactory queueFactory = (QueueConnectionFactory) context.lookup("MYTSTA");

	    /* API JMS classique */
	    QueueConnection queueConnection = queueFactory.createQueueConnection();
	    QueueSession queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
	    Queue queue = queueSession.createQueue("TEST.QUEUE");
	    QueueSender queueSender = queueSession.createSender(queue);
	    TextMessage message = queueSession.createTextMessage();
	    message.setText("Hello World !");
	    queueSender.send(message);
	    queueSession.close();

Methodes agiles : ma vision en ce début d'année

Depuis déjà quelques années et sous l’impulsion d’Arnaud j’ai fait en sorte que les projets auxquels je participe intègrent certains grands principes connus :

  • Tests : La mise en place réelle de ces tests est directement soumise à la conviction de l’encadrement du projet. Dans tous les cas, je propose l’outillage qui permet de mettre en place les tests unitaires et fonctionnels. La testabilité doit faire partie des critères de définition de l’architecture, par exemple l’injection de dépendance favorise la mise en place des tests. La testabilité peut aussi être un critère de choix de technologie, notamment pour l’IHM.
  • Intégration continue : De plus en plus facile à mettre en œuvre grâce à des outils comme subversion, maven ou continuum, je constate une demande forte des chefs de projet. Tout le monde a déjà vécu les intégrations laborieuses, notamment en off-shore. Cela donne une visibilité commune sur le travail en cours et responsabilise l’équipe.

J’ai maintenant envie de passer la vitesse supérieure et d’embrasser complètement les principes des méthodes agiles. Dans ce cadre, je me suis documenté sur eXtreme Programming (XP) que je connaissais de nom et sur Scrum que j’ai découvert. XP traite plus des méthodes d’ingénierie logicielle alors que Scrum propose une organisation projet. Guillaume Bodet a publié un article très pédagogique sur ce sujet.

J’ai organisé une session de formation aux méthodes agiles l’été dernier, c’est Claude Aubry qui assuré la formation les participants étaient très satisfaits. En fin d’année, j’ai participé aux rencontres agiles qui m’ont permis d’avoir un peu plus de retours d’expérience.

Je pense que la plus grosse marche à franchir consiste à casser la barrière MOA/MOE et cette habitude de tout vouloir planifier / analyser / concevoir à l’avance.

En 2008, il faut maintenant passer à l’action. Comment faire ?

  • Convaincre nos commerciaux de proposer des offres alternatives en réponse aux appels d’offre de projets au forfait ?
  • Suivre une formation certifiante Scrum pour approfondir le sujet et rassurer les clients ?
  • Profiter d’un projet au forfait pour mettre en place ces méthodes au sein du forfait en essayant de convaincre le client sur les points clefs : pas de planification à l’avance, rôle de directeur de produit, itérations courtes …

Ouverture du blog

Ca y est, je me lance j’ouvre ce blog dans le but de parler d’informatique en général et d’architecture et de méthodes agiles en particulier. Je vais aussi parler des mes loisirs, le VTT et la photo notamment.

Bonne lecture.