Affichage des articles dont le libellé est Eclipse. Afficher tous les articles
Affichage des articles dont le libellé est Eclipse. Afficher tous les articles

jeudi 24 juin 2010

Eclipse 2010 : Helios est sortie vivement Indigo

Chaque année, la fondation Eclipse et de ses projets assemble une version coordonnée selon un calendrier planifié en commun. Cette année il s’agit de la version Helios.

Après, Callisto en 2006 , Europa en 2007 , Ganymede en 2008 , Galileo en 2009 voici Helios en 2010 September 24, 2010.

La prochaine version se nommera Indigo et sortir en juin 2011 (espérons que Micorsoft ne réclame pas des droits d’auteur sur le nom.)

Eclipse Helios est la publication 2010 des projets Eclipse : cette année 39 équipes de projet font partie de la release.

Remarquons la présence de Acceleo : un outil de pour réaliser des générateurs de code basé sur l’approche MOF.

Les projets Helios : Eclipse juin 2010

Project Name

Version

Acceleo

Acceleo 3.0.0

Accessibility Tools Framework

0.8.0

ATL - Atlas Transformation Language

3.1.0

BPMN modeler

1.2

Buckminster Component Assembly

Helios

Business Intelligence and Reporting Tools (BIRT)

2.6.0

C/C++ Development Tooling (CDT)

7.0

CDO Model Repository

3.0.0

Dali Java Persistence Tools

2.3

Data Tools Platform

1.8

Dynamic Languages Toolkit

2.0

Eclipse Communication Framework

ECF 3.3

Eclipse Git Team Provider

 

Eclipse Modeling Framework (EMF)

2.6.0

Eclipse Packaging Project

1.3.0

Eclipse Platform

3.6

Eclipse Project

3.6.0

Eclipse Web Tools Platform Project

WTP 3.2.0 (Helios)

EclipseLink Project

2.1 - Helios

EMF Compare

1.1.0

EMF Query

 

EMF Teneo Model Relational Mapping

 

EMF Transaction

 

EMF Validation

 

Equinox

3.6

Extended Editing Framework

0.8.0

Fortran Development Tools

6.0

GEF - Graphical Editor Framework

3.6.0

GMF Tooling

 

Graphical Modeling Framework

2.3.0

Graphical Modeling Framework (GMF) Notation

1.4.0

Graphical Modeling Framework (GMF) Runtime

1.4.0

Java Emitter Templates (JET2)

M2T JET 1.1.0 (Helios)

Java implementation of Git

 

Java Workflow Tooling

 

JavaScript Development Tools

3.2.0 (Helios)

JavaServer Faces

 

JDT - Java development tools

 

Linux Tools

0.6.0

Marketplace Client

Helios

MDT OCL (Object Constraint Language)

3.0 (Helios)

MDT UML2

UML2 3.1.0

MDT XSD (XML Schema Definition)

 

Memory Analyzer

 

Memory Analyzer

 

Mint

0.9.0

Mobile Tools for Java

1.1

Model Discovery

MoDisco 0.8.0

Modeling Amalgamation Project

amalgam 1.1.0

modeling.emft.ecoretools

 

modeling.emft.mwe

MWE 1.0.0 (Helios)

modeling.m2t.xpand

Xpand 1.0.0 - Helios

MoDisco

 

Mylyn

3.4

Net4j Signalling Platform

3.0.0

Parallel Tools Platform (PTP)

4.0

PDE - Plugin Development Environment

3.6

PHP Development Tools

 

Rich Ajax Platform

1.3

rt.jetty

 

SCA Tools

2.1.0

Sequoyah

1.0

Server Tools

 

SOA Tools

2.1

Subversive - SVN Team Provider

 

Swordfish

0.10

Target Management

3.2

Test and Performance Tools Platform Project

4.7.0

Web Services Tools

WTP 3.2

WTP Common Tools

3.2 (Helios)

WTP EJB Tools

WTP 3.2 (Helios)

WTP Java EE Tools

WTP 3.2 (Helios)

WTP Source Editing

3.2.0 (Helios)

Xtext

Xtext 1.0.0 (Helios)

jeudi 29 octobre 2009

ESB open source & IDE : Mule IDE 2.0 est disponible

MuleSoft a annoncé en cette fin de d’octobre 2009, Mule IDE 2.0 pour Mule ESB a été mise à jour.

Mule IDE 2.0 est l’environnement de développement et des tests de Mule.

Mule IDE 2.0 est basé sur Eclipse. Il supporte les fonctionnalités suivantes:

-Création d’un nouveau projet Mule dans Eclipse

-Création d'une copie des exemples de Mule en tant que projet Eclipse

-Création d’un nouveau fichier de configuration Mule avec les déclarations, au choix, des espaces de nommage à utiliser (jms, cxf, file, …)

-l’Intégration de l’IntelliSense et la complétion automatique lors du développement des fichier de configuration de Mule


-l’exécution des projets dans le serveur Mule à partir de Eclipse

- l’exécution en mode débogage des projets dans le serveur Mule à partir de Eclipse

Mule IDE 2.0 est compatible avec n'importe quel configuration de Mule 2.1 ou ultérieure collectivité ou une entreprise de distribution Mule.

----> Référence

http://www.mulesoft.org/display/MULEIDE/Mule+IDE+2.0+Installation+Guide

jeudi 15 octobre 2009

Tutorial Mule ESB : pas à pas

Cet article présente une série de présentations et de tutoriels pour démystifier Mule ESB : http://net-progress.blogspot.com/)

1 les projets d’intégration avec ESB.

1.1 de la nécessité d’un projet d’intégration dans un S.I. (Système d’information).

1.2 Les types d’intégration.

1.3 Intégration par les données :.

1.4 Intégration par les API :.

1.5 Intégration par les processus.

1.6 Un ESB est service de l’intégration.

2 Mule ESB 2.x est il un ESB.

2.1 Ce qu’est un ESB.

2.2 Rôle d’un ESB.

2.3 Mule ESB est il un ESB.

2.4 La concurrence open source.

2.5 Autres usages possible pour Mule.

3 Tutorial Mule ESB : une introduction.

3.1 C’est quoi Mule.

3.2 qu’est ce qu’un service Mule.

3.3 Séparer la logique métier de la logique de routage.

4 Tutorial Mule ESB : les principales composantes.

4.1 Présentation.

4.2 Installer Mule et son IDE.

4.2.1 Installer Mule.

4.3 Installer l’IDE de Mule.

5 Tutorial Mule ESB : Créer un projet d’intégration avec Mule en utilisant l’IDE Eclipse.

5.1 Créer un projet Mule.

5.2 Créer une configuration Mule.

5.3 Lancer l’exécution du projet à partir d’Eclipse.

5.4 Sélectionner la configuration Mule.

6 Tutorial Mule ESB & Eclipse : déployer un projet d’intégration avec Eclipse.

6.1 Déployer le projet à partir d’Eclipse.

6.2 Exécuter le projet.

7 Tutorial Mule ESB : Une application simple, Echo sans altération de message.

7.1 Introduction.

7.2 Présentation générale du fichier de configuration de Mule.

7.3 Construction pas à pas d’un exemple simple :

8 Tutorial Mule ESB : Une seconde application simple, Echo avec modification du message

9 Tutorial Mule ESB & Spring Ioc: Utilisation des beans Spring avec Mule.

10 Tutorial Mule ESB : illustration des capacités de Mule.

10.1 Description :.

10.2 Le sujet :

10.3 Pour commencer :

10.4 Configuration de Mule.

10.5 Définir les transformateurs.

10.6 Définir le modèle.

10.7 Définir un service.

10.8 Définir les entrées du service.

10.9 Définir le composant du service.

10.10 Définir la sortie du composant.

10.11 Finaliser le projet.

10.12 Exécuter le projet.

10.13 Retour sur les transformations.

lundi 12 octobre 2009

Tutorial Mule ESB : illustration des capacités de Mule

NB : cet article fait partie d’une série de présentation et de tutorials pour démystifier Mule ESB : http://net-progress.blogspot.com/)

Dans l’exemple présenté dans cette partie, nous allons explorer les capacités d’un ESB : Protocol de transport, transformation et gestion des exceptions

Description :

L’exemple a pour objectif de répondre à une demande de résultat dans un examen pour un étudiant donnée. Les aspects suivants seront traités

1. Réception de l’invocation par deux méthodes (VM et http)

2. Développement et Utilisation de transformateurs spéciaux

3. Utilisation d’une stratégie de gestion des exceptions

4. Réponse synchrone par http et affichage directe dans la page web

Le sujet :

Il s’agit d’un service en ligne de suivi des résultats des examens nationaux.

Un utilisateur pourra trouver les résultats de ses examens à travers une interface web dans son portail favoris.

Ce portail communique avec le serveur de l’université via un protocole de son choix : Mule est capable de varier le protocole d’exposition d’un service indépendamment de son implémentation

Pour commencer :

Créer un projet Mule vide et définir le fichier de configuration : resultat-examen-http-config.xml

Les Pojo en relation avec le projet sont :

Etudiant (sous sa forme la plus simple, pour les besoins du tutorial)

1:  package com.oxia.att.mule.intro.beans;
2: import java.io.Serializable;
3: public class Etudiant implements Serializable {
4: private static final long serialVersionUID = 7010138636008560022L;
5: private String nom;
6: private String universite;
7: // getter & setter …
8: public boolean isValid() {
9: if (nom == null)
10: return false;
11: // accépter seulement si le nom a plus de 2 caractère
12: if (nom.length() > 1)
13: return true;
14: return false;
15: }
16: }

ResultatExamen : objet contenant le résultat de l’étudiant (sous sa forme la plus simple, pour les besoins du tutorial)




1:  package com.oxia.att.mule.intro.beans;
2: import java.io.Serializable;
3: public class ResultatExamen implements Serializable {
4: private static final long serialVersionUID = -3140370545357738491L;
5: private StringBuffer resultat = new StringBuffer();
6: public StringBuffer append(String str) {
7: return resultat.append(str);
8: }
9: public StringBuffer append(StringBuffer sb) {
10: return resultat.append(sb);
11: }
12: public String toString() {
13: return resultat.toString();
14: }
15: }

Le projet se présente sous cette forme :




clip_image001




Configuration de Mule


Le prologue :


1:  <?xml version="1.0" encoding="UTF-8"?>

Fixer les namspaces à utiliser




1:  <mule xmlns="http://www.mulesource.org/schema/mule/core/2.2"
2: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:spring="http://www.springframework.org/schema/beans"
3: xmlns:http="http://www.mulesource.org/schema/mule/http/2.2" xmlns:vm="http://www.mulesource.org/schema/mule/vm/2.2"
4: xmlns:stdio="http://www.mulesource.org/schema/mule/stdio/2.2"
5: xsi:schemaLocation="
6: http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
7: http://www.mulesource.org/schema/mule/core/2.2 http://www.mulesource.org/schema/mule/core/2.2/mule.xsd
8: http://www.mulesource.org/schema/mule/http/2.2 http://www.mulesource.org/schema/mule/http/2.2/mule-http.xsd
9: http://www.mulesource.org/schema/mule/vm/2.2 http://www.mulesource.org/schema/mule/vm/2.2/mule-vm.xsd
10: http://www.mulesource.org/schema/mule/stdio/2.2 http://www.mulesource.org/schema/mule/stdio/2.2/mule-stdio.xsd">




Définir les transformateurs



Définir les transformateurs à utiliser




1: <custom-transformer name="StringToEtudiant"
2: class="com.oxia.att.mule.intro.transofrmer.StringToEtudiant" />
3: <custom-transformer name="EtudiantToResultatExamen"
4: class="com.oxia.att.mule.intro.transofrmer.EtudiantToResultatExamen" />
5: <custom-transformer name="ResultatExamenToString"
6: class="com.oxia.att.mule.intro.transofrmer.ResultatExamenToString"/>
7: <custom-transformer name="HttpRequestToEtudiant"
8: class="com.oxia.att.mule.intro.transofrmer.HttpRequestToEtudiant" />
9: <custom-transformer name="ExceptionToString"
10: class="com.oxia.att.mule.intro.transofrmer.ExceptionToString" />
11: <custom-transformer name="HttpRequestToParameter"
12: class="org.mule.transport.servlet.transformers.HttpRequestToParameter" />
13: <custom-transformer name="ObjectToString"
14: class="org.mule.transformer.simple.ObjectToString" />



Donnons ici un exemple de transformateur qui reste, rappelons le, un code spécifique à Mule.




Exemple de code source d’un transformateur spécifique développe dans le cadre de ce tutorial




1:  package com.oxia.att.mule.intro.transofrmer;
2: import org.mule.api.transformer.TransformerException;
3: import org.mule.transformer.AbstractTransformer;
4: import com.oxia.att.mule.intro.beans.ResultatExamen;
5: import com.oxia.att.mule.intro.beans.Etudiant;
6: public class EtudiantToResultatExamen extends AbstractTransformer {
7: public EtudiantToResultatExamen() {
8: super();
9: this.registerSourceType(Etudiant.class);
10: this.setReturnClass(ResultatExamen.class);
11: }
12: public Object doTransform(Object src, String encoding)
13: throws TransformerException {
14: ResultatExamen resultatExamen = new ResultatExamen();
15: Etudiant etudiant = (Etudiant) src;
16: resultatExamen.append("Le candidat : ");
17: resultatExamen.append(etudiant.getNom());
18: resultatExamen.append(" de L'universite : ");
19: resultatExamen.append(etudiant.getUniversite());
20: return resultatExamen;
21: }
22: }

Une classe de Transformation


· hérite de la classe AbstractTransformer


· et implémente la méthode doTransform(…).

Cette classe a accès au Payload du message et suppose qu’il est de type Etudiant




Il est préférable de rester indépendant du protocole de transport afin de réutiliser les transformations dans d’autres situations :




1:  Etudiant etudiant = (Etudiant) src;



Définir le modèle



1:  <model name="ResultatExamenSample">
2: La définition des services
3: </model>


Définir un service



Rappelons, que dans un service il ya 4 parties




























<component />



Le composant



<outbound>



</outbound>



Le point de sortie



<default-service-exception-strategy>



</default-service-exception-strategy>



La gestion des exceptions



</service>





Définir les entrées du service



Dans le premier service nommé DonneesEtudiant, nous allons avoir deux points d’entrée :




· Un point d’entrée http


· Un point d’entrée vm

1:  <inbound>
2: <inbound-endpoint address="http://localhost:8888"
3: transformer-refs="HttpRequestToEtudiant" synchronous="true">
4: </inbound-endpoint>
5: <vm:inbound-endpoint path="etudiant"
6: transformer-refs="StringToEtudiant" synchronous="true" />
7: </inbound>


Pour appeler le service avec HTTP, lancer cette URL dans un navigateur



http://localhost:8888?nom=Khalil




pour faire appel à ce service avec la programmation, utiliser la classe MuleClient:



MuleClient client = new MuleClient();



client.send("vm://etudiant", "Khalil", null);




UMOMessage response = client.send("vm://etudiant", "Ross", null);


System.out.println("response = " + response.getPayload());

Définir le composant du service


Utilisons ici un appel direct à la classe de service (un Simple POJO)

1: <component class="com.oxia.att.mule.intro.service.VerifierCandidat" />


Définir la sortie du composant


Nous illustrons dans cette partie l’usage des filtres :

Les Filtres permettent de préciser les conditions qui doivent être remplies pour un message afin qu’il soit acheminé à un service. Il existe plusieurs types de filtres offerts par Mule que vous pouvez utiliser. Il est possible de créer vos propres filtres.




Nous utilisons ici un routeur spécial : le <filtering-router> : qui présente l’avantage de filtrer selon le contenu et dispatché vers le point de sortie approprié.



· Si le résultat est de type Etudiant alors tout va bien



· Si c’est une exception (ici de type com.oxia.att.mule.intro.exception.CandidatException) alors on passe en mode erreur



1:<outbound>
2:<filtering-router>
3: <vm:outbound-endpoint path="getResultatExamen" synchronous="true" />
4: <payload-type-filter
5: expectedType="com.oxia.att.mule.intro.beans.Etudiant" />
6:</filtering-router>
7:<filtering-router>
8: <vm:outbound-endpoint path="userErrorHandler" synchronous="true" />
9: <payload-type-filter
10: expectedType="com.oxia.att.mule.intro.exception.CandidatException" />
11: </filtering-router>
12:</outbound>


Et



1:  default-service-exception-strategy>
2: <vm:outbound-endpoint path="systemErrorHandler" />
3: </default-service-exception-strategy>


Finaliser le projet



Pour finaliser le projet, il reste à indiquer les destinations getResultatExamen, userErrorHandler et systemErrorHandler



Pour cela une solution est définir des nouveaux services :



1:  <service name="ResultatExamen">
2: <inbound>
3: <vm:inbound-endpoint path="getResultatExamen"
4: transformer-refs="EtudiantToResultatExamen"
5: responseTransformer-refs="ResultatExamenToString"
6: synchronous="true" />
7: </inbound>
8: <component
9: class="com.oxia.att.mule.intro.service.ObtenirResultatExamen" />
10: </service>
11: <service name="UserErrorHandler">
12: <inbound>
13: <vm:inbound-endpoint path="userErrorHandler"
14: responseTransformer-refs="ExceptionToString" synchronous="true"/>
15: </inbound>
16: </service>


Dans ce dernier service, nous utilisons le fameux routeur <pass-through-router>




1:  <service name="SystemErrorHandler">
2: <inbound>
3: <vm:inbound-endpoint path="systemErrorHandler" synchronous="true" />
4: </inbound>
5: <outbound>
6: <pass-through-router>
7: <stdio:outbound-endpoint system="ERR" />
8: </pass-through-router>
9: </outbound>
10: </service>


Exécuter le projet



Une fois lancé il suffit d’utiliser une simple page HTML



1:  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2: <html xmlns="http://www.w3.org/1999/xhtml">
3: <head>
4: <title>Obtenir Résultat Examen</title>
5: </head>
6: <body>
7: <form method="GET" action="http://localhost:8888">
8: <input type="text" name="nom"/>
9: <input type="submit" value="Demander le Résultat de l'Examen" />
10: </form><br />
11: </body>
12: </html>


clip_image001[4]




La réponse est alors la suivante



clip_image002



Le serveur indique que tout s’est bien passé









INFO 2009-07-12 00:08:53,890 [connector.http.0.receiver.2] org.mule.transport.vm.VMMessageDispatcher: Connected: endpoint.outbound.vm://getResultatExamen






Si on provoque une exception (il suffit d’envoyer un nom de 1 caractère)



clip_image003



Le résultat est toujours affiché ( la situation est maitrisée)



clip_image004



Le serveur indique qu’on est passé en mode exception :



<><><><><>





INFO 2009-07-12 00:12:24,000 [connector.http.0.receiver.2] org.mule.transport.vm.VMMessageDispatcher: Connected: endpoint.outbound.vm://userErrorHandler



lundi 5 octobre 2009

Tutorial JBPM : BMP, Processus & JBPM

Voici quelques liens utiles pour débuter avec JBPM :

En français à partir du site :



En anglais liens très intéressants partir du site de Joram Barrez (jBPM core developer at JBoss/Red Hat ) http://www.jorambarrez.be/blog/about/



jeudi 1 octobre 2009

Tutorial Mule ESB : Une seconde application simple, Echo avec modification du message

NB : cet article fait partie d’une série de présentation et de tutorial pour démystifier Mule ESB : http://net-progress.blogspot.com/)

Reprenons l’exemple précédent (voir lien suivant ), pour y ajouter un élément nouveau :

Traiter le message obtenu au niveau du point d’entrée (<inbound>) avant de le transférer vers le point de sortie </outbound>

C’est l’occasion d’utiliser le tag XML component :

<component>

</component>

Le service métier à invoquer

Avant de configurer le service « métier », il est temps de développer la classe Java qui sera responsable de traiter le message :

Il est très important de savoir que cette classe java est indépendante de Mule : il s’agit d’un simple POJO (on verra même comment l’injecter avec de l’Ioc et Spring)

La classe Java est la suivante : com.oxia.att.mule.intro.ComposantSimple

Avec Eclipse :

clip_image002

Préciser le package et le nom de la classe

clip_image004

Puis développer la classe :

Ceci est un exemple simple

1:  package com.oxia.att.mule.intro; 
2: import java.util.UUID;
3: package com.oxia.att.mule.intro;
4: import java.util.UUID;
5: public class ComposantSimple {
6: private String prefix="Le préfix du message_";
7: private String numero;
8: /*
9: * exemple simple de méthode métier qui
10: * exploite le message obtenu ( Mule est responsable de tout transformer ...)
11: * et retourne un nouveau message ( Mule est responsable de tout transformer ...)
12: *
13: */
14: public String hello(String message) {
15: numero = "_"+ UUID.randomUUID().toString();
16: System.out.println("le message originale est : " +message);
17: message = prefix + message + numero ;
18: System.out.println("le message en sortie est : " +message);
19: return message ;
20: }
21: public void setPrefix(String prefix) {
22: this.prefix = prefix;
23: }
24: }
Maintenant il suffit d’indiquer à Mule d’utiliser cette classe Java comme destination su message obtenu au niveau du INBOUD (utiliser une nouvelle configuration de Mule (echo-system-2-config.xml)

1:  <component class="com.oxia.att.mule.intro.ComposantSimple"/> 
Le projet se présente comme suit :

clip_image001

Exécuter le projet :

clip_image003

On constate que

  • le message est « passé » au POJO sous format String

Mule a découvert (tout seul) la méthode à utiliser, grâce à son algorithme de résolution :

  • deux candidata public void setPrefix(String prefix) et public String hello(String message),
  • la méthode set public void setPrefix(String prefix) ne retourne rien alors que la méthode public String hello(String message), retourne un String : c’est une cible


En cas d’ambiguïté, il est possible d’indiquer la méthode dans la configuration du composant

mais ceci est un autre sujet

lundi 28 septembre 2009

Talend introduit la « seconde » offre MDM open source

Après l’offre de SUN –MDM Suite, voilà un nouvel entrant dans le domaine du MDM
Il s’agit bien sûre de la seconde offre dans le domaine, après le projet Mural soutenu par SUN. T
Le MDM (Gestion des données de référence) est une discipline de gestion des données de référence afin que cette donnée reste unique au sein de l'entreprise tout en étant partagé par plusieurs applications ou services métiers
Cette très bonne nouvelle pour la communauté open source en général et le MDM en particulier, pourrait avoir une influence sur les décisions d’Oracle quant à la suite à donner au projet Mural.
En effet, l’arrêt du projet n’est plus la bonne décision pour ralentir l’ascension de l’open source dans ce domaine, puisque Talend va poursuivre ses activités. Il serait plus intéressant pour Oracle / Sun de promouvoir Mural afin de ralentir la monté de Talend.
d'autre part signalons que le produit est basé sur Eclipse, ce qui confirme la place centrale de Eclipse dans les projets open source.

Pour approfondir le sujet :
Le master data management possède, enfin une offre open source
Oracle & SUN : Quel avenir pour l’unique solution MDM open source, SUN MDM Suite?
Rachat de Sun par Oracle : quel avenir pour l’unique solution de MDM Open Source





en référence à :
Talend introduit le premier MDM open source
et

Talend fait son entrée dans le MDM, en convertissant du code propriétaire à l'Open Source

dimanche 27 septembre 2009

Tutorial Mule ESB : Une application simple, Echo sans altération de message

NB : cet article fait partie d’une série de présentation et de tutoriaux pour démystifier Mule ESB : http://net-progress.blogspot.com/)

Introduction

L’application à développer est très simple, mais montre les premiers pas dans la création d’un projet d ‘intégration :

Nom du projet : Exercice_01_echo_System

Son objectif est limité : présenter une abstraction de la console de saisie IN et de sortie OUT

Pour commencer, créer un projet de type Mule (Exercice_01_echo_System) et un fichier de configuration de Mule (echo-system-config.xml)

Présentation générale du fichier de configuration de Mule

Le fichier de configuration de Mule est au format XML. L’IDE de Mule présente se base surl la version vision simplifie d’un éidteur XML de

clip_image002

clip_image004

Une configuration Mule, minimale est de ce type :

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns=" …

<model …>

<stdio:connector…/>

Les déclarations globales au niveau de la configuration

<service …>

Une déclaration d’au moins un service

<inbound>

</inbound>

Au moins un point d’entrée, pour recevoir les messages

Une abstraction du transport et des détails des protocoles

<component>

</component>

Le service métier à invoquer

<outbound>

</outbound>

Un point de sortie, pour envoyer des messages

Une abstraction du transport et des détails des protocoles

</service>

 

</model>

</mule>

 

Le lien est alors simple à faire avec cette vision de l’intégration

clip_image006

Construction pas à pas d’un exemple simple :

Utiliser une configuration de Mule : echo-system-1-config.xml.

La première partie du fichier XML est le prologue :

1:  <?xml version="1.0" encoding="UTF-8"?>  


La seconde partie est la définition des namespaces à utiliser par Mule



1:  <mule xmlns="http://www.mulesource.org/schema/mule/core/2.2"  
2: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3: xmlns:stdio="http://www.mulesource.org/schema/mule/stdio/2.2"
4: xsi:schemaLocation="
5: http://www.mulesource.org/schema/mule/core/2.2 http://www.mulesource.org/schema/mule/core/2.2/mule.xsd
6: http://www.mulesource.org/schema/mule/stdio/2.2 http://www.mulesource.org/schema/mule/stdio/2.2/mule-stdio.xsd">


Ensuite on déclare le connecteur qui sera utilise par les points de contactes : ici on utilise le système d’entrée sorties classiques IN/OUT. Chez Mule la déclaration est basée sur le namespaces stdio.



1:  stdio:connector name="SystemStreamConnector"  
2: promptMessage="Saisir les informations nécessaires: "
3: messageDelayTime="1000"/>


Dans sa première version, le Service de l’application cible ne fait que deux choses :



1) recevoir sur le Système IN : des messages en texte



2) expédier ces messages vers le Système OUT



on a donc besoin de deux partie



1) <inbound>



a. Pour définir ce <inbound>, on utilise le namespaces du protocole de transport cible






<inbound>



<stdio:inbound-endpoint system="IN"/>



</inbound>





1) <outbound>



b. Pour définir ce < outbound >, on utilise le namespaces du protocole de transport cible : <stdio:outbound-endpoint system="OUT"/>



c. Mais il faut ajouter une indication sur le Routage du message en définissant le routeur à utiliser. Dans notre cas nous avons besoin simplement d’un routage systématique sans altération du message ni filtrage : c’est l’objectif du routeur de Mule dit <pass-through-router>






<outbound>



<pass-through-router>



<stdio:outbound-endpoint system="OUT"/>



</pass-through-router>



</outbound>







Ainsi la définition du service est la suivante



1:    <model name="echoSystemSimple">  
2: <service name="echoService">
3: <inbound>
4: <stdio:inbound-endpoint system="IN"/>
5: </inbound>
6: <outbound>
7: <pass-through-router>
8: <stdio:outbound-endpoint system="OUT"/>
9: </pass-through-router>
10: </outbound>
11: </service>
12: </model>


Le fichier de configuration devient :



1:  <?xml version="1.0" encoding="UTF-8"?>  
2: <mule xmlns="http://www.mulesource.org/schema/mule/core/2.2"
3: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4: xmlns:stdio="http://www.mulesource.org/schema/mule/stdio/2.2"
5: xsi:schemaLocation="
6: http://www.mulesource.org/schema/mule/core/2.2 http://www.mulesource.org/schema/mule/core/2.2/mule.xsd
7: http://www.mulesource.org/schema/mule/stdio/2.2 http://www.mulesource.org/schema/mule/stdio/2.2/mule-stdio.xsd">
8: <stdio:connector name="SystemStreamConnector"
9: promptMessage="Saisir les informations nécessaires: "
10: messageDelayTime="1000"/>
11: <model name="echoSystemSimple">
12: <service name="echoService">
13: <inbound>
14: <stdio:inbound-endpoint system="IN"/>
15: </inbound>
16: <outbound>
17: <pass-through-router>
18: <stdio:outbound-endpoint system="OUT"/>
19: </pass-through-router>
20: </outbound>
21: </service>
22: </model>
23: </mule>


L’exécution du projet dans Mule est très simple :



clip_image001

mercredi 23 septembre 2009

Tutorial Mule ESB & Eclipse : déployer un projet d’intégration avec Eclipse

NB : cet article fait partie d’une série de présentation et de tutoriaux pour démystifier Mule ESB : http://net-progress.blogspot.com/)

Déployer le projet à partir d’Eclipse

Bien que la meilleure solution de déploiement soit l’usage d’un outil de Build automatique (Ant ou Maven), il est simple de déployer un projet Mule à partir d’Eclipse

Avant de commencer, rappelons que Mule a besoin de 2 éléments pour exécuter un projet d’intégration

1) Le fichier de configuration

2) Le ou les fichier(s) jar des classes du projet :

a. ces fichiers doivent être disponibles dans le classpath

b. le plus simple c’est de les copier dans le répertoire préparé par mule pour ce besoin

-  le répertoire %MULE_HOME%lib\user

clip_image002

Ainsi, il suffit d’exporter le projet sous format JAR dans ce répertoire

%MULE_HOME%lib\user

Pour cela

1) sélectionner le projet dans le navigateur de projet d’Eclipse

2) avec un click droit de la souris, sélectionner : Export

clip_image004

la suite est très simple : choisir type d’export vers un fichier JAR

clip_image006

Choisir les fichiers à exporter et autre paramètre classique d’un Jar Java.

clip_image008

Choisir le répertoire vers d’export du projet Jar (pour simplifier, copier directement vers le répertoire cible %MULE_HOME%lib\user).

clip_image010

Fixer les paramètres selon les besoins.

clip_image012

Fixer les paramètres selon les besoins. Puis choisir Finish

clip_image014

Une fois le fichier jar généré, il est possible de lancer l’exécution du projet en dehors d’Eclipse.

Exécuter le projet

Copier le fichier de configuration dans un répertoire (au choix) : bonjour-oxia-config.xml

Exemple

F:\TestProjet\conf

Créer un fichier command Windows .bat : bonjour-oxia-config.bat

Dans le répertoire

F:\TestProjet\

Le contenu du fichier est

"%MULE_HOME%\bin\mule.bat" -config .\conf\bonjour-oxia-config.xml

Lancer l’exécution

bonjour-oxia-config.bat

clip_image016

Arrêter l’exécution avec « CTRL-C »

clip_image018

mercredi 16 septembre 2009

Tutorial Mule ESB : les principales composantes

NB : cet article fait partie d’une série de présentation et de tutoriaux pour démystifier Mule ESB : http://net-progress.blogspot.com/)

Présentation

Usage simple de Mule pour réaliser une intégration synchrone entre deux services

clip_image002

Ce tutorial contient plusieurs leçons,

Le didacticiel contient des leçons qui vous guident à travers la création d'un projet Mule et de nouveaux fichiers de configuration et d'application.

Une simple application Mule qui présente les concepts EIP et qui montre l’usage des nampaces, ses connecteurs, ses transformateurs et des points de connexion (Endpoints)

Installer Mule et son IDE

Installer Mule

Comme la majorité des applications Java, l’installation de Mule est très simple. Il suffit d’avoir Java 5 installé sur son poste pour que tout fonctionne sans problème.

Deux étapes

1) installer Java :

la version 1.5 + (la version 1.6 est recommandée)

2) installer Mule :

Nous allons utiliser la version 2.2.1 (mule-standalone-2.2.1.zip est la version stable en Juillet 2009). La version 3.0.0 est encours de finalisation et ajoute le support d’OSGI

Télécharger Mule à partir du site web de Mule http://www.mulesource.org/display/MULE/Download

1) Il suffit de décompresser le fichier mule-standalone-2.2.1.zip, dans un répetoire

2) Créer une variable d’environnement MULE_HOME F:\01_Tools\mule2.2.1

clip_image004

3) Ajouter %MULE_HOME%\bin au Path

clip_image005

4) Tester l’installation

clip_image006

5) Tester l’exemple echo :

%MULE_HOME%\examples\echo\echo.bat

Le résultat devrait être comme suit :

clip_image008

6) Mule est opérationnel et prêt à l’emploi.

Installer l’IDE de Mule

Suivant l’exemple des solutions commerciales (Biztalk, Websphere, Sonic …) Mule propose des outils d’aide à la création de projets d’intégration avec son ESB : un IDE pour simplifier la création de configuration Mule.

Comme tous les leaders de la communauté Java, Mule a compris qu’il a intérêt à suivre la mouvement Eclipse : l’IDE de Mule est proposé en tant que Plugin’Eclispe.

Nous allons supposer l’usage de la version Ganymede de Eclispe : la 3.4.x

1) Le site de mise à jour est le suivant : http://dist.muleforge.org/mule-ide/updates/3.4/

Une fois installé, la configuration de Eclipse est simple

Allez dans Window > Preferences.

Cliquer Mule, et Add.

Indiquer le répertoire Home de Mule

clip_image010

Eclipse, est maintenant informé de la version de Mule sur votre environnement de développement

Vous pouvez commencer à créer des projets d’intégration avec Mule

mais, ceci est un autre sujet …

dimanche 9 août 2009

Grails, Groovy, xFire & SoapUI : créer un web service et le tester en 22 lignes de codes, 7 commandes et 5 minutes

Préambule : Avant de commencer, s’agissant de publier des services, je rappelle que je reste adepte du concept Contrat-first. Mais, ce tutoriel est destiné à montrer la puissance de l’approche Grails. Il doit être affiné pour suivre l’approche contract-first. Qu'il s'agisse d'une solution java développée 'from scratch' ou basée sur du 'java software' payé en $$ ou sur du .net basée sur Biztalk : l'essentiel c'est que le contrat soit défini dès le début

Question : comment créer un web service en exposant la liste à partir d’une base de données

Contexte : confronté, sur un nouveau projet, à une demande du client qui souhaite rapidement : apprendre à consommer des web services, dans un projet classique JSF/Spring/Hibernate . L’idée est d’utiliser Spring webservice template, mais, Il a fallu fournir des web services rapidement, pour les consommer

Réponse : le simple c’est d’utiliser Grails (yes it's a java software from Spring cretors, based on Groovy : a dynamique java software from the Spring source ...)

Des webservices en moins de 5 minutes, 6 commandes et 22 lignes de codes …

En prime : les écrans de gestion de l’entité cible dans la base de donnée

Etape 1: installer Grails

http://www.objis.com/formation-java/tutoriel-grails-installation.html

Etape 2 : créer une application

(Commande 1)>grails create-app webservice-xfire

(Commande 2)>cd webservice-xfire

(Commande 3)>grails create-domain-class com.oxia.att.grails.Role

Ajouter ce code (en somme du Plain old Groovy objects, dit POGO)

1:  package com.oxia.att.grails
2: class Role {
3: String name
4: static constraints = {
5: name(blank: false, size: 1..20)
6: }
7: public String toString() {
8: return name
9: }
10: }


(commande 4)>grails create-controller com.oxia.att.grails.Role



Etape 2 : installer le plugin xFire



http://www.grails.org/plugin/xfire



(commande 5)> grails install-plugin xfire


Etape 3 : générer les bases du service en relation avec le POGO Role

(commande 6)> grails create-service com.oxia.att.grails.Role

Etape 4 : ajouter un peu de code Groovy pour exposer le métier

1:  class RoleService {
2: static expose=['xfire']
3: def serviceMethod(Role dc) {
4: return true
5: }
6: Role[] getRoles(){ Role.list() as Role[] }
7: }

clip_image001[4]

Etape 5 : lancer

(commande 7)> grails run-app
http://localhost:8080/webservice-xfire/services/role?wsdl
clip_image003[4] Avant de tester le web service : ajouter au moins 1 Role (le fameux admin…) ( les écrans d’administration ont été générés aussi) clip_image004[4]

Etape 6 : tester avec SoapUI

Créer un projet avec SOAP UT à partir du WSDL

clip_image005[4]

SOAPUI va créer ce projet

clip_image006[4]

Lancer le teste

clip_image008[4]

Le résultat n’est pas « orienté » Contrat-first

Mais … avec du XPATH on pourra se débrouiller !

Avouons qu’il faut travailler encore le CONTRAT

Etape 7: statistique

Code utile : 22 lignes de codes (les tests unitaires sont aussi utiles mains non comptabilisées dans ce cas)

 +----------------------+-------+-------+
| Name | Files | LOC |
+----------------------+-------+-------+
| Controllers | 1 | 4 |
| Domain Classes | 1 | 10 |
| Services | 1 | 8 |
| Unit Tests | 3 | 36 |
+----------------------+-------+-------+
| Totals | 6 | 58 |
( sans formatage de texte )

Etape 8 : consommer le service

Utiliser Spring Web service template

Mais, ceci est un autre sujet

--------------------------------------------------

autres sujets Grails

-- Groovy & Grails : L’instabilité en vue du coté JRuby, une opportunité de plus pour Groovy & Grails

-- Groovy et Grails dans le giron de SpringSource : Un bel avenir pour les langage dynamique
--------------------------------------------------

autres sujets à venir

- le concept Java 3G : Grails, Groovy et Google appengine

- les plugins Grails


Architecte SOA & Professionnel Open Source Headline Animator

 
Khaled BEN DRISS
Cloud Computing, SOA et Web 2.0 : Des sujets techniques sur SOA et l'Open Source : de Java & .Net, PHP5, Symfony, à SaaS / PaaS en passant par Azure, google appengine, le BPM, la Modélisation et d'autres sujets du coté du serveur et cloud computing.