Archive

Archive for the ‘Non classé’ Category

Ouvrir un AS/400 vers le système d'information

La plupart des SI ont un passé et disposent de systèmes anciens dits « legacy », ces systèmes hébergent encore de nombreuses applications et leur remplacement ne peut pas se faire du jour au lendemain.

Il est donc important de pouvoir valoriser ces systèmes et de les intégrer dans des architectures à base de service dites SOA.

Pour les systèmes AS/400, OS/400, i5/OS, iseries ou System i (rayez les mentions inutiles), voici les mécanismes que j’ai mis en oeuvre:

  • Exposition de services de l’AS/400

IBM publie en OpenSource une librairie nommée JT400 qui permet de se connecter à l’AS400 et entre autre de faire du RPC en lançant les programmes à distance. La connexion se fait en TCP/IP et cela fonctionne avec des programmes écrits en COBOL, RPG et RPG ILE, avec des scripts CL et probablement dans d’autres langages.

La javadoc de la classe ProgramCall contient un bon exemple d’utilisation.

Une fois le service interfacé en Java, il est exposé vers le monde « ouvert » et peux donc être ré exposé sous toutes les formes possibles : WebService SOAP, Resource REST, EJB, …..

  • Consommer un service depuis l’AS/400

IBM met à disposition une boite à outil qui permet de consommer des WebServices SOAP depuis des programmes C, RPG ou COBOL qui tournent sur l’AS/400.Cette boite à outil est en fait un portage de la librairie Axis C vers l’AS/400 ce qui est à mon avis un bon signe de maturité.

Cet article explique la méthode à utiliser. Voici quelques remarques suite à l’utilisation que j’en ai faite.

  • Les chaines de caractères sont de type « xsd_string », ils faut les passer au stub SOAP par adresse (%addr) et non par valeur.
  • Ne pas oublier de tronquer les chaînes de caractères à la bonne longueur et d’y ajouter un zéro binaire (X’00’) que ce soit pour l’URL du WebService ou pour ses paramètres

Le RedBook nommé « Building SOA-based Solutions for IBM System i Platform » documente les différentes manières d’intégrer un AS/400 dans une architecture orientée service.

Publicités

PostgreSQL ou MySQL ?

Je n’ai jamais eu l’occasion de participer à des projets qui utilisent une de ces deux bases autrement que pour des tests rapides ou des outils utilisés par l’équipe (Mantis, Cacti, ce blog, … ), les clients pour lesquels j’ai travaillé utilisent les bases des grands acteurs du marché, essentiellement Oracle et DB2, éventuellement dans leurs versions gratuites pour des applications moins critiques et des volumes réduits.

La lecture de cette documentation de PostgreSQL détaillant les différences entre PostgreSQL et MySQL est très intéressante pour en savoir un peu plus sur ces deux bases. PostgreSQL me semble plus proche des grosses bases de données commerciales alors que MySQL me donne une image plus « lightweight ». L’article référence des benchmarks effectués par SUN, cité comme acteur indépendant ce qui est assez amusant car depuis Sun a acheté MySQL. L’article indique que les résultats des deux concurrents sont équivalents et un peu inférieurs à ceux d’Oracle qui est cité étant le SGBD le plus performant :

« le meilleur des produits commerciaux en terme d’efficacité des performances »

L’article indique que les performances par dollar sont tout de même à l’avantage des bases OpenSource, en évitant de s’attarder sur le coût du support. Les grosses entreprises ne veulent souvent pas se passer d’un support commercial pour les éléments d’infrastructure et dans ce domaine la facturation au CPU voir au coeur reste souvent la règle.

(via scub)

Xebia Poker Tour

Xebia a lancé une série de quizz autour de Java / J2EE, les 50 premiers au classement seront conviés à un tournoi de poker qui va permettre de gagner des lots intéressants.

Je trouve cette initiale originale et très sympathique, même si le but n’est sûrement pas philanthropique. J’imagine que cette opération est bonne en terme d’image et de recrutement.

A vos questionnaires et qui sait, rendez vous autour d’une table de poker ?

COMET : Push HTTP

Dans des articles précédents, je découvrais les fonctionnalité de Jetty 6 et de Tomcat 6 pour déconnecter les requêtes HTTP de leur Thread de traitement, ce qui permet de mettre en place de manière efficace du « poll » longue durée depuis un client AJAX, ce qui revient presque a pouvoir faire du « push » du serveur vers le client.

La cinématique est la suivante :

  • Le client initie une connexion HTTP vers le serveur, en tache de fond à l’aide du composant XmlHttpRequest ou d’une iFrame cachée
  • Le serveur reçoit la requête et n’envoie une réponse au client que quand un événement est à présenter.
  • Si au bout de quelques dizaines de secondes le serveur n’a pas d’évènements à pousser vers le client, il renvoie tout de même une réponse qui indique au client de renouveler sa requête afin d’utiliser une connexion fraîche.

Ce modèle de programmation (appelé COMET) a été monté en charge et les resultats sont très bons, moins d’une demi seconde de temps de latence sous une charge très importante.

Google utilise cette technique pour le chat intégré à GMail avec apparement un timeout de l’ordre de 30 secondes. Le client léger (appelé GAD) de la plateforme de call center Genesys d’Alcatel Lucent utilise aussi ce mécanisme avec un timeout de l’ordre 10 secondes

Tomcat aussi travaille ses I/O

1 février 2008 1 commentaire

Après avoir découvert les continuations de jetty, voici les Advanced IO de Tomcat.

Le modèle de programmation permet aussi de déconnecter les Thread des connexion HTTP, la mise en œuvre me semble un peu plus complexe que pour Jetty mais permet un contrôle plus fin des évènements de la connexion.

Quels services Google utilisez vous ?

23 janvier 2008 2 commentaires

Je suis hyper dépendant des services Google, voici ce que j’utilise :

  • Le moteur de recherche : combien d’articles ou de documents trouvés  ou encore de bugs résolus grâce à Google ?
  • Gmail : Courriel perso + mailing lists
  • Reader : Lecture des flux RSS/Atom
  • Browser Sync : Synchronisation des marque pages, cookies, pages en cours, …. entre les différentes installation de firefox que j’utilise (il y en a au moins 5)
  • Notebook : Prise de notes rapide, liens a lire.
  • Altertes : Me permet de recevoir un email quand mon nom est cité sur la toile
  • Analytics : Permet d’obtenir des statistiques sur la fréquentation de ce blog.
  • Documents : Bien pratique pour une utilisation privée, pour du travail collaboratif ou pour avoir toujours les docs sous la main.
  • Maps : Avec Google Earth, je l’utilise pour pré visualiser des parcours de VTT
  • Talk :En client léger dans GMail ou sous linux avec Pidgin
  • Code : Hébergement de projets OpenSource

A ces services s’ajoutent des produits comme GWT ou Android (bientôt), je suis donc bel et bien google dépendant. Google héberge bon nombre de mes données privées, les risques sont donc nombreux mais j’ai vraiment confiance dans cette boite. Ça n’est pas très rationnel certes. Et vous ?

Hibernate ou iBatis ?

21 janvier 2008 2 commentaires

Dans cet entretien vidéo, Mark Richards donne son point de vue sur le choix entre Hibernate et iBatis.

J’ai souvent rencontré des intégristes des deux solutions et je trouve que son point de vue est très bon :

  • Quand on peut construire le modèle de données et le modèle objet de concert, Hibernate est adapté
  • Si on en arrive à écrire du SQL, iBatis est adapté
  • Il ne faut pas hésiter à utiliser les deux outils dans le même système. Mark donne l’exemple d’un système dans lequel hibernate est utilisé pour les fonctionnalités de gestion traditionnelles alors que iBatis est utilisé pour le reporting.

Comme souvent il n’y a pas de mauvais produits, uniquement des mauvais choix 🙂

Via application-servers