Fuse source parisjug-10052011

59
10/05/2011 10/05/2011 Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

description

 

Transcript of Fuse source parisjug-10052011

Page 1: Fuse source parisjug-10052011

10/05/201110/05/2011

Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Page 2: Fuse source parisjug-10052011

10/05/201110/05/2011

Intégration avec Camel et ServiceMix

Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Charles Moulliard

Architecte de Solutions

Apache Committer

Page 3: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 33www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Objectif

« Faire découvrir les projets Apache orientés Intégration comme Camel ainsi que le conteneur

ServiceMix et les architectures cibles»

Page 4: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 44www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

IntervenantIntervenant

Charles MoulliardIngénieur Agronome & Licencié en Zoologie

17 expérience dans le monde du développement IT (J2EE, .NET)

Spécialisé dans le monde des nouvelles technologies Web/Internet/Intégration

Chef de projet dans le monde bancaire, financier, telco, assurance, transports

Architecte de solutions chez FuseSource

Committeur Apache sur les projets : ServiceMix, Karaf (PMC) & Camel

BIO : « Apache ServiceMix and Karaf in Action » - Manning editor

Page 5: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 55www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

SommaireSommaire

Intégration avec Camel et ServiceMix

Démystifier l' ESB

ServiceMix - plateforme multi-conteneurs

Présentation des projets - Camel, CXF, Karaf et ActiveMq

Description des topologies possibles - messaging, osgi, messaging + osgi, web

Haute disponibilité, scalabilité et clustering - ActiveMQ, ServiceMix et ActiveMQ - ServiceMix

Page 6: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 66www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

« Démystifier l' ESB et présenter la plateforme Apache ServiceMix »

Page 7: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 77www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

ESB - ServiceMixESB - ServiceMix

Demystifier le concept - Enterprise Service Bus

→ Ce n'est pas un

→ Ni un

Mais un plateforme d' échange

de messages, d'objets

transitant via une

couche de transport

Page 8: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 88www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

ESB – ServiceMix (1)ESB – ServiceMix (1)

Permet de séparer la couche métier de celles qui vont transporter l'information et transformer

Page 9: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 99www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

SMX – porte conteneursSMX – porte conteneurs

ServiceMix – projet de la fondation Apache

Créé en 2005 pour implémenter la spécification Java Business Integration

Découple les composants (métier, technique) via l'envoi de messages XML

Défini un modèle de packaging/déploiement d' applications (SU/SA)

Couche transport s'appelle - Normalised Messaging Router

Page 10: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 1010www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

SMX – porte conteneurs (2)SMX – porte conteneurs (2)

Approche JBI est intéressante mais contraignante

Format XML

Routage encapsulé

Développement des composants

Peu de support de la part des acteurs (IBM, Oracle, …) pour faire évoluer la spécification

Parallèle avec EJB est intéressante

Positionnement de ServiceMix pour le future

Page 11: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 1111www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

SMX – porte conteneurs (3)SMX – porte conteneurs (3)

Page 12: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 1212www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

SMX – porte conteneurs (3)SMX – porte conteneurs (3)

ServiceMix 4

Basé sur un noyau OSGI

Pq → offre modularité, gestion des jars, versioning

Notre serveur devient un

conteneur d' intégration

opensource des projets

Camel

CXF

ActiveMQ, Aries (JPA, Transaction, JNDI), ….

Page 13: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 1313www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Karaf – Cœur de ServiceMixKaraf – Cœur de ServiceMix

Date de naissance - 16th of June 2010

Runtime utilisant un serveur OSGI :

Apache Felix

Eclipse Equinox

Fournit un conteneur léger dans lequel des

Applications

Composants

Routes, ...

peuvent être déployés

Page 14: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 1414www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Karaf – Cœur de ServiceMix Karaf – Cœur de ServiceMix

Page 15: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 1515www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Karaf – Cœur de ServiceMix Karaf – Cœur de ServiceMix

Caractéristiques :

Console d'administration (locale, remote, ssh, web, jmx)

Systéme de provisionnement (features)

Déploiement à chaud et gestion dynamiques des configs

Gestion des instances

Sécurité intégrée (JAAS → ldap, jdbc, file)

Gestion centralisée des logs (log4j, logger, commons logging, ….)

Page 16: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 1616www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Conteneur(s)Conteneur(s)

Plateforme est modulable car on sélectionne les librairies, conteneurs que l'on souhaite utiliser

Offre un meilleur contrôle du serveur

Integration

Web Services

Web

IoC

Middelware Java

Camel, JBI

Jetty, Pax Web

CXF

ActiveMQ

Spring, Blueprint

Page 17: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 1717www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

« ActiveMQ – l'agent d'échange / de persistence des messages »

Page 18: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 1818www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

ActiveMQActiveMQ

Une usine de fabrication de messages (PtP, Pub/Sub) supportant JMS et proposant connecteurs C, C++, .Net, PhP.

Page 19: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 1919www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

« CXF – L'outil de fabrication des Web Services »

Page 20: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 2020www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

CXFCXF

Fusion de 2 projets (Celtic and Xfire)

Simplifie création et déploiement des web services via approche code-first ou WSDL-first.

Supporte les standards comme :• JAX-WS : Web Services (XML/SOAP)

• JAX-RS : RESTfull service (JSON)

• SOAP 1.1, 1.2, WSDL 1.1

• WS-Security : sécurise la connexion client serveur et vice versa

• WS-Addressing : standardise les données échangées dans les entêtes SOAP pour le routage

• WS-RM : garantie de livraison du message

Page 21: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 2121www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

CXF (1)CXF (1)

Se configure trés facilement via plugin maven <plugin> <groupId>org.apache.cxf</groupId> <artifactId>cxf-codegen-plugin</artifactId> <version>${cxf-version}</version> <executions> <execution> <id>generate-sources</id> <phase>generate-sources</phase> <configuration> <sourceRoot>${basedir}/target/generated/src/main/java</sourceRoot> <wsdlOptions> <wsdlOption> <wsdl>${basedir}/src/main/resources/report_incident.wsdl</wsdl> </wsdlOption> </wsdlOptions> </configuration> <goals> <goal>wsdl2java</goal> </goals> </execution> </executions> </plugin>

Page 22: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 2222www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

CXF (2)CXF (2)

Fichier Spring XML <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cxf="http://camel.apache.org/schema/cxf" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://camel.apache.org/schema/cxfhttp://camel.apache.org/schema/cxf/camel-cxf.xsd">

<import resource="classpath:META-INF/cxf/cxf.xml"/> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/> <import resource="classpath:META-INF/cxf/cxf-extension-http-jetty.xml"/> …. <cxf:cxfEndpoint id="reportIncident" address="http://localhost:9080/incident" wsdlURL="etc/report_incident.wsdl" serviceClass="org.apache.camel.example.ReportIncidentEndpoint"> </cxf:cxfEndpoint>

…</beans>

Page 23: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 2323www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

« Camel – L'intégrateur opensource des modéles entreprises (EIP) »

Page 24: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 2424www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

CamelCamel

Date de naissance Mars 2007

Framework d’intégration opensource implémentant les modelés EIP

Utilise un language specifique appelé DSL

Supporte:

Architecture transactionnelle,

Echanges Sync/async,

Gestion des threads,

Mecanisme de controles des erreurs

Page 25: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 2525www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

CamelCamel

Plus de 50 modèles d'intégration

http://camel.apache.org/enterprise-integration-patterns.html

Page 26: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 2626www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

CamelCamel

Plus de 100 composants

http://camel.apache.org/components.html

Page 27: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 2727www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

CamelCamel

18 formateurs de données

http://camel.apache.org/data-format.html

Page 28: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 2828www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

CamelCamelLe modèle – Content Based Router

Langage DSL

Page 29: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 2929www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

CamelCamel

Page 30: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 3030www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

CamelCamel

Page 31: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 3131www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

CamelCamel

Page 32: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 3232www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

CamelCamel

Page 33: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 3333www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

CamelCamel

Java DSL

Page 34: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 3434www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

CamelCamel

Route Camel + Java DSL

Page 35: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 3535www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

CamelCamel

Une route Camel – EIP Filter Pattern

Page 36: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 3636www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

CamelCamel

Integration avec Eclipse, IntelliJ

Page 37: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 3737www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

CamelCamel

Spring DSL

Page 38: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 3838www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

CamelCamel

Assistance de l' IDE

Page 39: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 3939www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

« Quelles sont les architectures possibles – messages, java et/ou web »

Page 40: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 4040www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Architecture - messagingArchitecture - messaging

FTP Web Service

Bean/PoJo

from(ftp).beanRef(« myBean »);

from(« cxf:bean:myWS »).beanRef(« myBean ») ;

Le BUS orchestre les échanges entre les endpoints

Page 41: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 4141www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Architecture - JavaArchitecture - Java

La plateforme OSGI sert de registre pour des services = “Interface”

« Interface »DAO

A

Registre OSGI

B

<bean id="incidentServiceTarget" class="org.apache.camel.service.impl.IncidentServiceImpl"><property name="incidentDAO">

<osgi:reference interface="org.apache.camel.dao.IncidentDAO"/> </property>

</bean>

ServicePoJo

C

Hibernate/JPA

Page 42: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 4242www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Architecture – Messaging + JavaArchitecture – Messaging + Java

Decouplage des composants « services » de la couche d'intégration

Registre OSGI

ServicePoJo

« Interface »DAO

Hibernate/JPA

Web Service

from(« cxf:bean:myWS »).to(« bean:name=validate »).beanRef(«org.parisjug.jpaService»);

B

Bean Validate

A

C

Page 43: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 4343www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Architecture – Java + WebArchitecture – Java + Web

L' ESB héberge les projets Web (Jetty + Pax Web + OSGI HTTP Service)

Registre OSGI

ServicePoJo

« Interface »DAO

Hibernate/JPA

WebApplication

OSGI Runtime

Bundle

Page 44: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 4444www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

« Haute disponibilité, scalabilité et clustering »

Page 45: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 4545www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Une seule instanceUne seule instance

Unité de déploiement = bundle

1 seule instance SMX, plusieurs routes, cross-communication via NMR, asymétrie

NMR

CamelContext A CamelContext B

Page 46: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 4646www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Plusieurs instancesPlusieurs instances

Bridge assuré par ActiveMQ

“Interconnecte” les différentes instances de SMX

Page 47: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 4747www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Haute disponibilité - ActiveMQHaute disponibilité - ActiveMQ

2 mécanismes disponibles : pure Master/Slave et Shared message store

Page 48: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 4848www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Haute disponibilité - ServiceMixHaute disponibilité - ServiceMix

Seul le mécanisme de (lock) shared store est possible

Bundles peuvent etre deployés mais non activés

Page 49: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 4949www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Haute disponibilité - ClusteringHaute disponibilité - Clustering

Combine ActiveMQ (shared store) et ServiceMix (shared lock)

Réseau de brokers

Page 50: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 5050www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Cloud, ProvisionnementCloud, Provisionnement

FuseSource Fabric - basé sur Apache Zookeeper

Service de coordination distribué hautement disponible utilisant un registre utilisé pour les configs du cluster et les noeuds (runtime)

<<Zookeeper:toto>> <<Zookeeper:nestor>>Sync

ACLsData change

Page 51: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 5151www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Cloud, ProvisionnementCloud, Provisionnement

Mécanisme de provisionnement et de déploiement à distance

Basé sur un profile associé à un agent

karaf@root> fabric:create-profile --parents default webserver

karaf@root> zk:create -r /fabric/configs/versions/base/profiles/webserver/org.fusesource.fabric.agent/repository.karaf mvn:org.apache.karaf.assemblies.features/standard/2.2.1-SNAPSHOT/xml/featureskaraf@root> zk:create -r /fabric/configs/versions/base/profiles/webserver/org.fusesource.fabric.agent/feature.war war

karaf@root> fabric:create-agent --profile webserver --parent root test

Page 52: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 5252www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Cloud, ProvisionnementCloud, Provisionnement

La fabric permet d' enregister logiquement un endpoint camel dans le registre de Zookeeper (=znode)

Offre une nouvelle stratégie pour les architectures HTTP, CXF pour balancer les requetes

<<Zookeeper:2>>

<from uri="fabric:parisJug:jetty:http://10.0.0.1:9090/"/>

<<Zookeeper:3>>

<from uri="fabric:parisJug:jetty:http://10.0.0.2:9090/"/>

<<Zookeeper:1>>

<from uri="direct:A/><to uri="fabric:parisJug"/>

Page 53: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 5353www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

« Fin de la premiére partie »

Page 54: Fuse source parisjug-10052011

Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Démonstration

Page 55: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 5555www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

SommaireSommaire

De la théorie à la pratique

Transposition vers le language camel DSL des EIP

Codage, déboggage, testing

Développement des routes Camel

Packaging et déploiement

Page 56: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 5656www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

ContexteContexte

http://camel.apache.org/tutorial-osgi-camel-part2.html

Page 57: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 5757www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

ConclusionConclusion

Questions ?

Suivez-moi sur

http://twitter.com/cmoulliard

http://www.linkedin.com/in/charlesmoulliard

Mon blog : http://cmoulliard.blogspot.com

Page 58: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 5858www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Bibliographie / liensBibliographie / liens

Integration - Camel : http://camel.apache.org

ESB - ServiceMix : http://servicemix.apache.org

Runtime - Karaf : http://karaf.apache.org

WebService - CXF : http://cxf.apache.org

Broker - ActiveMQ : http://activemq.apache.org

OSGI EE - Aries : http://aries.apache.org

FuseSource : http://fusesource.com/documentation/

EIP : http://www.enterpriseintegrationpatterns.com

Page 59: Fuse source parisjug-10052011

10/05/201110/05/2011 Intégration avec Camel et ServiceMixIntégration avec Camel et ServiceMix 5959www.parisjug.orgwww.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

SponsorsSponsors