100
Spring One 11 & 12 juin 2008 Anvers, Belgique Version Date Auteur 1.0 13/06/2008 Arnaud Cogoluègnes

SQLI at SpringOne08

Embed Size (px)

Citation preview

Page 1: SQLI at SpringOne08

Spring One

11 & 12 juin 2008Anvers, Belgique

VersionDate

Auteur

1.013/06/2008Arnaud Cogoluègnes

Page 2: SQLI at SpringOne08

2Spring One 2008

Historique des révisions du document

                        

A. CogoluègnesCréation du document13/06/20081.0AuteurModificationsDateVersion

Page 3: SQLI at SpringOne08

Spring One 20083

Spring One 2008

Actualités récentes sur Spring & SpringSource

La conférence

Restitution des sessions

Conclusion

Plan

Page 4: SQLI at SpringOne08

Spring One 20084

Spring One 2008

Actualités récentes sur Spring & SpringSource

La conférence

Restitution des sessions

Conclusion

Plan

Page 5: SQLI at SpringOne08

Spring One 20085

Spring One 2008

ActualitésQuelques rappels

Novembre 2007 : Interface21 devient SpringSource

Novembre 2007 : Sortie de Spring 2.5

Janvier 2008 : SpringSource rachète CovalentCovalent : contributeur et support pour Tomcat et Apache HTTPD

Avril 2008 : sortie beta de Spring Source Application Platform

Serveur d’applicationsModulaire dans son infrastructure et pour les applicationsBasé sur OSGi

Page 6: SQLI at SpringOne08

Spring One 20086

Spring One 2008

Actualités récentes sur Spring & SpringSource

La conférence

Restitution des sessions

Conclusion

Plan

Page 7: SQLI at SpringOne08

Spring One 20087

Spring One 2008

La conférence Présentation

3ème édition

11 & 12 juin 2008 à Anvers, Belgique

Organisée par BeJUGBelgian Java User Group

Quelques Chiffres400 participants de 25 pays30 sessions, 2 keynotes27 intervenants (22 de SpringSource)

Partenaires : Oracle, JetBrains, CapGemini Belgique

Page 8: SQLI at SpringOne08

Spring One 20088

Spring One 2008

La conférence Les sessions

Page 9: SQLI at SpringOne08

Spring One 20089

Spring One 2008

Actualités récentes sur Spring & SpringSource

La conférence

Restitution des sessions

Conclusion

Plan

Page 10: SQLI at SpringOne08

Spring One 200810

Spring One 2008

La conférence Les sessions

Page 11: SQLI at SpringOne08

Spring One 200811

Spring One 2008

Welcome

Par Stephan JanssenFondateur BeJUGFondateur ParleysOrganisateur JaVoxx (ex-JavaPolis)

JaVoxxJavaPolis devient JaVoxx8-12 décembre 2008Inscription à partir de juillet

Page 12: SQLI at SpringOne08

Spring One 200812

Spring One 2008

Welcome Parleys.com

Site de publication de vidéosSpringOne, JavaPolis, JavaZone…

Présentation du business modelEspace payant, gratuit

Démo :Client Flex et GWTMode autonomePublications

Début de la publication de SpringOne 2008 : en septembre

Page 13: SQLI at SpringOne08

Spring One 200813

Spring One 2008

La conférence Les sessions

Page 14: SQLI at SpringOne08

Spring One 200814

Spring One 2008

Keynote Jour 1

Par Rod JohnsonDirecteur Général SpringSourceCréateur de SpringAuteur

• Expert One-on-One J2EE Design and Development (Programmer to Programmer)

• Expert One-on-One J2EE Development without EJB • Professional Java Development with the Spring Framework

Spring est devenu un standard de facto

Suprématie de Spring

Certification Spring par SpringSource

Page 15: SQLI at SpringOne08

Spring One 200815

Spring One 2008

Keynote Jour 1 Spring 2.5

Les “nouveautés” de Spring 2.5

Injection de dépendances avec annotations@Autowired + @Qualifier@Resource + @PostConstruct + @PreDestroy@Component

• Plus-value pour l’AOP, la sémantique, le rôle et le component-scanning

JMX

=> Une partie plutôt technique (contrairement au début)

Page 16: SQLI at SpringOne08

Spring One 200816

Spring One 2008

Keynote Jour 1 Portfolio (Misc.)

Spring SecuritySortie le mois dernierRappel sur Acegi et sa verbositéPlus-value de Spring Securité (AOP, namespace…)

Spring IntegrationLes Enterprise Integration Pattern à la Spring

Tests d’intégrationNouveaux supports pour JUnit 4.4 et TestNGSupport moins intrusifPlutôt inclus dans Spring Core que dans le portfolio

Page 17: SQLI at SpringOne08

Spring One 200817

Spring One 2008

Keynote Jour 1 Portfolio (Web)

Par Keith DonaldFondateur SpringSourceCréateur de Spring Web FlowLeader sur les projets Web du portfolio

Objectifs de Spring Web (2.5 et à venir)Modèle de programmation plus simpleSupport JSFSupport JavaScript

Page 18: SQLI at SpringOne08

Spring One 200818

Spring One 2008

Keynote Jour 1 Portfolio (Web)

Spring MVCSupport pour les annotationsVolonté de sortir du modèle d’héritage (pour les contrôleurs)Typage fortConvention plutôt que configuration

=> l’ancien modèle pourrait être abandonné dans Spring 3.0

Spring Web Flow 2Sortie mai 2008Plus facile à utiliser que la v.1Configuration allégée (moins verbeuse)Fonctionnement asynchroneMise à jour partielle de page (“view scope”)

Page 19: SQLI at SpringOne08

Spring One 200819

Spring One 2008

Keynote Jour 1 Portfolio (Web)

Spring JavaScriptAPI pour les pages webBasé sur DOJOIntégration avec Spring MVC et Spring Web Flow

Spring FacesUtilisation de JSF pour la partie vueDans un environnement managé par Spring

=> Enrichissement et ouverture de la partie web de Spring

Page 20: SQLI at SpringOne08

Spring One 200820

Spring One 2008

Keynote Jour 1 Middleware

Rod Johnson a souligné la différence entre :

Notre modèle de programmation• Applications Spring• Injection de dépendances• Modulaire

L’environnement d’exécution• Archive monolithique (WAR)

Les applications web ont supplanté les autres éléments de la pile J2EE / JEE

D’où l’absence des EAR dans la comparaison précédente

Page 21: SQLI at SpringOne08

Spring One 200821

Spring One 2008

Keynote Jour 1 Présentation de SpringSource Enterprise

Contrat à souscrire

Spring Enterprise EditionGarantie de correction de bugs, de patchVersion instrumentalisée de Spring

SpringSource Performance SuiteTool Suite (outils Eclipse)Application Management Suite

• Console (application Spring)• Debug, management, stats

Advanced Pack For Oracle• Performances, extension

Spring Source Support

Page 22: SQLI at SpringOne08

Spring One 200822

Spring One 2008

Keynote Jour 1 SpringSource Enterprise

SpringSource Tool SuitePlugins EclipseDistribution EclipsePersonal Use License

Démo par Christian DupuisLead de Spring IDEResponsable des outils Spring

FonctionnalitésDashboardTaskForce TutorialIntégration de S2AP (vue Server de WTP)Diagnostic d’erreursContent assist (ex. : version d’un bundle OSGi)

Page 23: SQLI at SpringOne08

Spring One 200823

Spring One 2008

Keynote Jour 1 Actualités

Rachat de CovalentSpringSource leader pour le support et la contribution Tomcat

Peter Cooper-Ellis chez SpringSourceAncien directeur technique de WebLogicChez SpringSource : Engineering & Product Management

Prédictions de Rod Johnson :Compétition sur le marché des serveurs d’applicationsFin du serveur d’applications monolithique -> modulaireFusion serveur d’applications – ESB ?

Page 24: SQLI at SpringOne08

Spring One 200824

Spring One 2008

Keynote Jour 1 Conclusion

Rappel de l’actualité autour de Spring et surtout de SpringSource

Opération de promotionLes outilsLa plateformeLes produits et l’expertise

Une période clé pour Spring et pour SpringSource

Page 25: SQLI at SpringOne08

Spring One 200825

Spring One 2008

La conférence Les sessions

Page 26: SQLI at SpringOne08

Spring One 200826

Spring One 2008

Spring 2.5 on the way to 3.0

Juergen HollerCo-fondateur de SpringContributeur le plus actif sur Spring CoreCo-auteur de “J2EE development without EJB”

Agenda :Etat de l’art de Spring 2.5Introduction à Spring 3.0

Page 27: SQLI at SpringOne08

Spring One 200827

Spring One 2008

Spring 2.5 on the way to 3.0 Spring 2.5

Rappels sur Spring 2.5Support Java 1.6 (JDBC 4.0, JMX)Compatible 1.5 & 1.4Plus compatible 1.3

Noyau de Spring 2.5Extensions pour bénéficier de 1.5Mais reste fondamentalement 1.4

Intégration AspectJLoad time weavingDéjà dans Spring 2.0

Page 28: SQLI at SpringOne08

Spring One 200828

Spring One 2008

Spring 2.5 on the way to 3.0 Spring 2.5

Support API JEE 5JPA, EJBServlet 2.5, JSP 2.1, JSF 1.2

Support pour EclipseLink et WebSphere JPA

AnnotationsJSR 250 (@Resource, @PostConstruct, @PreDestroy)@TransactionAttribute (EJB), @PersistenceContext, @PersistenceUnit@Autowired + @Qualifier@Component + component scanning@Configurable & AspectJPour Spring MVC

Tests unitairesJUnit 4.4, TestNG

Page 29: SQLI at SpringOne08

Spring One 200829

Spring One 2008

Spring 2.5 on the way to 3.0 Recommandations pour Spring 2.5

Option 1 :XML pour chaque composant (bean)Complété par des annotations

=> Adaptée pour la couche métier

Option 2 :Classes annotéesComponent scanning

=> Adaptée pour les contrôleurs web

Page 30: SQLI at SpringOne08

Spring One 200830

Spring One 2008

Spring 2.5 on the way to 3.0 Recommandations pour Spring 2.5

Option 1 :Externalisée

• Centralisée mais code supplémentaire à maintenirPossibilitée de changer sans recompilation

Option 2 :EmbarquéNécessite généralement des conventionsPeut nécessiter une recompilation

=> Savoir combiner les deux judicieusement

Page 31: SQLI at SpringOne08

Spring One 200831

Spring One 2008

Spring 2.5 on the way to 3.0 Spring 3.0

Planning :2.5.6 en juillet3.0 M1 en août (REST, EL)3.0 GA pour Q4 2008

Nouveau noyau Java 5Transparent pour l’utilisateur

Compatible J2EE 1.4

Nouvelles fonctionnalités du conteneur et EL++

Page 32: SQLI at SpringOne08

Spring One 200832

Spring One 2008

Spring 2.5 on the way to 3.0 Spring 3.0 Web

Portlet 2.0

Servlet 3.0

REST support

Gestion de conversation

Page 33: SQLI at SpringOne08

Spring One 200833

Spring One 2008

Spring 2.5 on the way to 3.0 @deprecated & suppression ?

Support pour Commons Attributes

Support pour TopLink

Hiérarchie des contrôleurs MVC

Hiérarchie des tests JUnit 3.8

Page 34: SQLI at SpringOne08

Spring One 200834

Spring One 2008

Spring 2.5 on the way to 3.0 Conclusion

Des similarités avec la keynote

Nouveautés pas vraiment nouvelles

Plongeon intéressant dans

Le noyau Spring 2.5

Spring 3.0

Page 35: SQLI at SpringOne08

Spring One 200835

Spring One 2008

La conférence Les sessions

Page 36: SQLI at SpringOne08

Spring One 200836

Spring One 2008

OSGi programming model

Adrian ColyerDirecteur technique de SpringSourceLead de AspectJCo-auteur “Eclipse AspectJ”Fondateur AJDT (outils Eclipse pour AspectJ)Impliqué dans S2APFondateur Spring Dynamic Modules

Page 37: SQLI at SpringOne08

Spring One 200837

Spring One 2008

OSGi programming model OSGi ?

Dynamic Module System for Java

ModuleDivision d’un système en modulesRègles de visibilitéProcessus de résolutionVersionning

DynamiqueOpérations possibles à l’exécution (install, start, stop, uninstall, update)

Orienté servicePublication de serviceService registry

Page 38: SQLI at SpringOne08

Spring One 200838

Spring One 2008

OSGi programming model Historique

Origine : OSGi Alliance

1999 : Java embarqué et network devices

2003 : support pour 4 composants mobiles

2004 : adoption dans l’Open Source (ex. : Eclipse)

2006 : premières utilisations coté serveur

Implémentations (Open Source)Eclipse EquinoxApache FelixKnopflerfish (Makewave)

Page 39: SQLI at SpringOne08

Spring One 200839

Spring One 2008

OSGi programming model Concepts

Il faut un conteneur : OSGi Service Platform

Compendium ServicesDes services optionnelsEx. : console d’admin, HTTP (ajout de servlet)

Unité de déploiement (“bundle”)JARManifest (MET-INF/MANIFEST.MF)

• SymbolicName, Version, Name…

Page 40: SQLI at SpringOne08

Spring One 200840

Spring One 2008

OSGi programming model Concepts

DépendancesImport-PackageLes classes du bundle B sont visibles pour AClassloading géré par le conteneurA peut faire des imports des classes de B

Fournir des classes aux autres bundles Export-Package

Service RegistryPublication et consommation de services

A

B

Page 41: SQLI at SpringOne08

Spring One 200841

Spring One 2008

OSGi programming model Bénéfices

Modularité forte (module = black box)

Gestion du cycle de vie

Versionning

Démos avec Equinox, sous EclipseConsoleVersionning concurrent

app

lib A lib B

lib C v1 lib C v2

Page 42: SQLI at SpringOne08

Spring One 200842

Spring One 2008

OSGi programming model Pour l’entreprise

Mettre OSGi coté serveur ?

Plusieurs architectures possiblesAutonome dans une application webBase d’un serveur d’applications (modulaire)

=> Ne permet pas de systématiser les applications OSGi powered

Page 43: SQLI at SpringOne08

Spring One 200843

Spring One 2008

OSGi programming model Challenges pour OSGi coté serveur

Gestion de l’aspect dynamiqueUne application doit s’attendre à voir ses modules disparaître, réapparaître…

Activation asynchroneFaire attendre les clients

Difficulté pour tester

Concurrence, gestion des threads

Problème de classloadingEx. : le bundle Hibernate ne sait pas ce qu’il doit importerGestion des dépendances (pas de distribution sous forme de bundle)

Page 44: SQLI at SpringOne08

Spring One 200844

Spring One 2008

OSGi programming model Dépôt OSGi de SpringSource

Bundle OSGi d’environ 300 bibliothèques Open Source

http://www.springsource.com/repository/app/

Page 45: SQLI at SpringOne08

Spring One 200845

Spring One 2008

OSGi programming model Dépôt OSGi de SpringSource

Page 46: SQLI at SpringOne08

Spring One 200846

Spring One 2008

OSGi programming model Conclusion

Les bases pour comprendreL’intérêt de OSGiLes problématiques d’un middleware OSGi à destination des applicationsLe fonctionnement de S2AP

Questions :OSGi adapté pour les applications ?Problématique technique ?Changement d’habitudes (modèle de programmation, de packaging) ?

Page 47: SQLI at SpringOne08

Spring One 200847

Spring One 2008

La conférence Les sessions

Page 48: SQLI at SpringOne08

Spring One 200848

Spring One 2008

Spring Dynamic Modules

Costin LeauLead Spring ModulesContributeur/lead Spring Dynamic Modules

Spring Dynamic Modulesaka Spring DMex-Spring OSGi

Objectif : utiliser OSGi sans code/préoccupation spécifique

Le projet :Licence ApacheDirigé par SpringSourceContributeurs : BEA, Oracle

Page 49: SQLI at SpringOne08

Spring One 200849

Spring One 2008

Spring Dynamic Modules Problèmes adressés

Spring DMConfigure les bundles

• Création, décorationInjection de service

• Inter-bundle

=> POJO dans OSGi

Page 50: SQLI at SpringOne08

Spring One 200850

Spring One 2008

Spring Dynamic Modules Fonctionnalités

Bundle = Application Context

Création automatiqueÀ partir de META-INF/spring/*.xml

Aucune dépendance vers OSGi

Contexte Spring OSGiConfigurableOsgiBundleApplicationContext

Page 51: SQLI at SpringOne08

Spring One 200851

Spring One 2008

Spring Dynamic Modules Services

Les services (OSGi) sont des beans Spring

Exposition dans le registry via namespace Spring DM

<osgi:service id="simpleServiceOsgi" ref="simpleService" interface="org.xyz.MyService" />

Référence à un service

<osgi:reference interface="org.xyz.MyService" />

Page 52: SQLI at SpringOne08

Spring One 200852

Spring One 2008

Spring Dynamic Modules Misc.

CardinalitésApposer des cardinalités sur des beans récupérés du registry (obligatoire, optionnel…). Le bundle (contexte) se charge en conséquenceNotions de List/Set de services

Listener : écouter les événements des servicesRegister/unregister

Tests unitairesFramework de tests unitairesSimulation de déploiementMulti-plateformes OSGi (Equinox, Felix, Knopflerfish)

Page 53: SQLI at SpringOne08

Spring One 200853

Spring One 2008

Spring Dynamic Modules Web

ChallengesClass et resource loadingJSP, taglib

Les solutions existantes pas satisfaisantesHTTP ServiceEquinox Extension Registry

Spring DM s’intégre avec le conteneur WebSolution pour Tomcat 5.5/6.0, Jetty 6.1, Jasper 2Spring DM 1.1 (version GA pour l’instant : 1.0.2)

Page 54: SQLI at SpringOne08

Spring One 200854

Spring One 2008

Spring Dynamic Modules Conclusion

Adresse les problématiques de OSGi concernant le développement d’applications d’entreprises

Doit permettre de garder… Ses habitudesSon modèle POJO

… tout en devenant OSGi-powered

Page 55: SQLI at SpringOne08

Spring One 200855

Spring One 2008

La conférence Les sessions

Page 56: SQLI at SpringOne08

Spring One 200856

Spring One 2008

Spring Transaction Choices for Transaction

Juergen Holler

Objectifs :

Distinguer les différents types de transactions

Démythifier certaines idées reçues

Bonnes pratiques concernant les transactions

Page 57: SQLI at SpringOne08

Spring One 200857

Spring One 2008

Spring Transaction Choices for Transaction Types de transactions

Natives : une base de données, JDBC

Mapping objet-relationnel : transaction et problématiques liées à l’outil

Message Broker : orienté message

Transaction XA : ressources multiples

Page 58: SQLI at SpringOne08

Spring One 200858

Spring One 2008

Spring Transaction Choices for Transaction Mythes

XA est obligatoire pour toute application critique

XA est obligatoire avec le mapping objet-relationnel

XA est obligatoire pour JDBC + JMS

Les gestionnaires de transaction JTA sont capables d’effectuer des optimisations intelligentes

=> toujours effectuer un choix approprié=> toujours des concessions à faire

Page 59: SQLI at SpringOne08

Spring One 200859

Spring One 2008

Spring Transaction Choices for Transaction Misc.

L’attribut transactionnel read-only permet des optimisationsEx. : Hibernate, JDBC en cluster

Privilégier les transactions natives

L’ORM nécessite une intégration spécifiqueEx. : commit/rollback mais aussi flush, cache pour HibernateScope (un contexte de persistance par transaction)

JTAUtilisation du protocole XAGestionnaire de transactions avec un serveur d’applications ou en standalone

Page 60: SQLI at SpringOne08

Spring One 200860

Spring One 2008

Spring Transaction Choices for Transaction Misc.

L’attribut transactionnel read-only permet des optimisationsEx. : Hibernate, JDBC en cluster

Privilégier les transactions natives

L’ORM nécessite une intégration spécifiqueEx. : commit/rollback mais aussi flush, cache pour HibernateScope (un contexte de persistance par transaction)

JTAUtilisation du protocole XAGestionnaire de transactions avec un serveur d’applications ou en standalone

Page 61: SQLI at SpringOne08

Spring One 200861

Spring One 2008

Spring Transaction Choices for Transaction Misc.

XA complexe à paramétrer“lent” par nature à cause du recovery logMais avec des garanties très fortes

Etude de cas avec JMSUse case : réception d’un message, opération BD, aknowledgmentAvec XA : “Exactly once semantics”Si erreur dans opération BD => le message peut être relancé => duplication du traitementSolution “manuelle” : détection de message dupliqué (“at least one semantics”)La solution manuelle peut avoir un débit deux fois supérieur à la solution XA

Page 62: SQLI at SpringOne08

Spring One 200862

Spring One 2008

La conférence Les sessions

Page 63: SQLI at SpringOne08

Spring One 200863

Spring One 2008

Enterprise Integration Patterns with Spring

Mark FisherLead Spring IntegrationCommiter Spring Core

Rappel : EIP dans Spring CoreSpring RemotingJMS supportScheduling

Page 64: SQLI at SpringOne08

Spring One 200864

Spring One 2008

Enterprise Integration Patterns with Spring EIP

Rappel sur les EIP

Pipe & Filter

Message Translator

Message Router

Page 65: SQLI at SpringOne08

Spring One 200865

Spring One 2008

Enterprise Integration Patterns with Spring Objectifs

Fournir une API simple pour les EIP

Avec une base SpringDI, AOP, Remoting, Sécurité, méta-données, annotations

PrincipesCouplage lacheSeparation of concerns

Page 66: SQLI at SpringOne08

Spring One 200866

Spring One 2008

Enterprise Integration Patterns with Spring Quoi ?

Présentation de l’APIInterfaces : Source, Target…

Exemples de configuration :Namespace XMLAnnotations

Message Bus :“Extension” de l’Application ContextWiring des éléments (ex. : canaux)Gère le scheduling

DémosTirées de la distribution

Page 67: SQLI at SpringOne08

Spring One 200867

Spring One 2008

Enterprise Integration Patterns with Spring Conclusion

Projet récent (décembre 2007)

API pas encore figée

Implémentation “légère” (à la Spring)

Beaucoup de conceptsTous les EIP

Intégration prévue à la S2AP

Page 68: SQLI at SpringOne08

Spring One 200868

Spring One 2008

La conférence Les sessions

Page 69: SQLI at SpringOne08

Spring One 200869

Spring One 2008

Keynote Jour 2

Adrian Colyer

Rob HarropCo-auteur Pro Spring (notamment)Contributeur S2AP

Rappel sur ce qu’a apporté SpringApproche composantConfiguration

Page 70: SQLI at SpringOne08

Spring One 200870

Spring One 2008

Keynote Jour 2 Les limites du modèle actuel

ModularitéOk pour tout ce qui est design (ex. : programmation par interfaces)Des limites pour le déploiement (monolithique)Pas de gestion de visibilité

VersionningPermet la gestion des contratsMais problèmes :

• Souvent géré à la main (“deploy and pray”)• Concurrence entre plusieurs versions d’une même bibliothèque

Nécessite des mécaniques complexes au niveau du classloading

ExécutionLimitation des serveurs d’applications et du mode de déploiementEmbarquer une plateforme (ex. : OSGi) ne résoud pas tous les problèmes

Page 71: SQLI at SpringOne08

Spring One 200871

Spring One 2008

Keynote Jour 2 Démos & conclusion

DémosSpring Tool SuitePetClinic sur S2AP

ConclusionMise en évidence de limites et de problématiquesDes démos intéressantesAmener le public à suivre les différentes sessions sur S2AP

Page 72: SQLI at SpringOne08

Spring One 200872

Spring One 2008

La conférence Les sessions

Page 73: SQLI at SpringOne08

Spring One 200873

Spring One 2008

Introduction to SpringSource Application Platform

Andy WilkinsonMembre de l’équipe S2AP

Objectifs de la session : utiliser rapidement la plateforme

Démo : installationDécompression de l’archive

Explication de l’arborescenceNoyau de la plateforme dans /libDépendances dans /repositoryLes “librairies” dans /librairies => packaging spécial (extension OSGi)

• Permet de simplifier la gestion des dépendances

Page 74: SQLI at SpringOne08

Spring One 200874

Spring One 2008

Introduction to SpringSource Application PlatformDémos

Lancement de la plateforme

Explication de la journalisationPeu verbeuseNe dit que ce qu’il faut

Lancement “simple” avec JMXÉvite la syntaxe complexeMonitoring avec JConsole

Démarrage en mode debug

Page 75: SQLI at SpringOne08

Spring One 200875

Spring One 2008

Introduction to SpringSource Application PlatformConsole de la plateforme

Page 76: SQLI at SpringOne08

Spring One 200876

Spring One 2008

Introduction to SpringSource Application PlatformDémos

Configuration : fichiers JSONSimple, structuré et lisible

“serviceability” : distinction log et trace

Exemple de déploiement d’une application webVia la consoleVia un répertoire scanné

La plateforme convertit les manifestGestion de header non-OSGi

Page 77: SQLI at SpringOne08

Spring One 200877

Spring One 2008

La conférence Les sessions

Page 78: SQLI at SpringOne08

Spring One 200878

Spring One 2008

Building Web Applications with the S2AP

Sam BrannenCommiter Spring Core

Objectifs :montrer les différentes options de déploiement de S2APPassage d’un WAR standard à une application modulaire

Page 79: SQLI at SpringOne08

Spring One 200879

Spring One 2008

Building Web Applications with the S2APIntroduction

Spring DM se charge du cycle de vie des contextesSimplification de OSGi

SpringSource Application PlatformKernel Spring DMServiceability

• Trace : description détaillée de l’exécution• Log : message important pour l’utilisateur

Notion de “personnalités”• Pour l’instant, personnalité web (ie. Support pour le web)• À venir, personnalité batch

Conteneur OSGi (“small footprint”)

Page 80: SQLI at SpringOne08

Spring One 200880

Spring One 2008

Building Web Applications with the S2APLes différentes options de déploiement

WAR standardSupport du conteneurComportement identique à Tomcat

Pur OSGiBundle OSGiPour les bibliothèques autonomes, les services globaux, de petites applications web

Shared Lib WARWAR ayant besoin de bundle(s) déployé(s) sur la plateforme

Shared Lib WARWAR mettant à disposition des classes / des services

PAR (Platform Archive)Pour tous les modules d’une applicationSimilaire à un EAR

Page 81: SQLI at SpringOne08

Spring One 200881

Spring One 2008

Building Web Applications with the S2APDémos des différentes possibilités

ParticularitésLes projets Eclipse peuvent être déployés dans la vue “Server”Shared Lib WAR : l’archive voit sa taille diminuerShared Services WAR : utilisation d’un application contexte OSGi dans web.xmlDes comportements par défaut pour Spring MVC

• Plus de web.xml !Génération d’un PAR à partir d’EclipseDes traces pour chaque applicationLa console d’admin fait apparaître les différents modes

Page 82: SQLI at SpringOne08

Spring One 200882

Spring One 2008

Building Web Applications with the S2APConclusion

Bonne vue des différentes alternatives de déploiement

Outillage Eclipse bien intégré et semble stable

Les avantages de OSGi mis en évidence pour le web

Questions :Gestion des mécaniques pas trop lourd ?Possibilité d’intégration continue, de déploiement automatique ?Les versions GA des produits prêtes ?Peu de documentation encore

Page 83: SQLI at SpringOne08

Spring One 200883

Spring One 2008

La conférence Les sessions

Page 84: SQLI at SpringOne08

Spring One 200884

Spring One 2008

Inside the SpringSource Application Platform

Rob Harrop

Objectifs :Architecture de la plateformeLes difficultés techniquesAnecdotes / historique

Le développement de la plateforme a commencé ces derniers mois

Page 85: SQLI at SpringOne08

Spring One 200885

Spring One 2008

Inside the SpringSource Application Platform

Page 86: SQLI at SpringOne08

Spring One 200886

Spring One 2008

Inside the SpringSource Application PlatformArchitecture

Equinox :conteneur OSGiEclipse

SpringSource Dynamic KernelGestion de la concurrence, des IOExtension de Equinox :

• Gestion des threads• Load class weaving

Chargement à la demande des bundles• “small footprint”• Possibilité de récupérer les bundles depuis un dépôt

Page 87: SQLI at SpringOne08

Spring One 200887

Spring One 2008

Inside the SpringSource Application PlatformConnexion à la console OSGi de la plateforme

Page 88: SQLI at SpringOne08

Spring One 200888

Spring One 2008

Inside the SpringSource Application PlatformDémonstration de diagnostic d’erreur

Effort particulier pour le diagnostic d’erreur

Démo ClassNotFoundException (bean d’un contexte)Indique le bundleIndique le nom du bean

Démo ClassNotFoundException (dans un manifeste)Propose une correction

Page 89: SQLI at SpringOne08

Spring One 200889

Spring One 2008

Inside the SpringSource Application PlatformGestion de la concurrence

Une des points les plus difficiles

Equinox pas threadsafe

Solution Utilisation de Spring DMUtilisation des API de concurrence du JDK (java.util.concurrent)

Page 90: SQLI at SpringOne08

Spring One 200890

Spring One 2008

Inside the SpringSource Application PlatformMisc.

Modification de AspectJ pour les performances

Possibilité de faire des dumpsSnapshot de l’état du systèmeDétection de deadlock

Extension de Equinox pour le load time weavingSupport de ClassFileTransformer (agent)

Page 91: SQLI at SpringOne08

Spring One 200891

Spring One 2008

Inside the SpringSource Application PlatformConclusion

Plongeon intéressant dans la plateforme

Retour expérience intéressantNaissance de la plateforme

La plateforme est dans un état avancéBeta 6

Pas tout à fait prêt pour la productionStabilité généraleEncore un peu pour les “hacker”

Page 92: SQLI at SpringOne08

Spring One 200892

Spring One 2008

La conférence Les sessions

Page 93: SQLI at SpringOne08

Spring One 200893

Spring One 2008

Classloading in OSGi

Frederik SantensLead architect à Ebit

ObjectifsExpliquer le système de classloading de OSGiRetour d’expérience sur le load time weaving sur une plateforme OSGi

Page 94: SQLI at SpringOne08

Spring One 200894

Spring One 2008

Classloading in OSGiClassloading

Rappel sur le classloading “classique”

À l’exécution, une classe est identifiée parSon nom completSon classloader

Le système de classloading par défaut est linéaireSystem, extension puis bootstrap classloaders

Page 95: SQLI at SpringOne08

Spring One 200895

Spring One 2008

Classloading in OSGiClassloading avec OSGi

OSGi casse le modèle linéaire

OSGi utilise un système de délégation en réseau

Ce système permet le versionningUtilisation de plusieurs versions d’une même classe

OSGi propose des règles de délégationEx. : java.* est chargé par le classloader parent

C’est ce type de classloading qui permetUne visibilité limitée des classesEt donc une meilleure encapsulation

Page 96: SQLI at SpringOne08

Spring One 200896

Spring One 2008

Classloading in OSGiRetour d’expérience et conclusion

Retour d’expérience sur la mise en oeuvre du load time weaving en environnement OSGi

But : faire du domaine driven design (injection de services dans les entités)Surmonter un ensemble de problème (limites de Spring DM)

ConclusionUne session très technique et très pointueTechnique de classloading intéressanteOSGi présente encore des difficultés techniques !

Page 97: SQLI at SpringOne08

Spring One 200897

Spring One 2008

Actualités récentes sur Spring & SpringSource

La conférence

Restitution des sessions

Conclusion

Plan

Page 98: SQLI at SpringOne08

Spring One 200898

Spring One 2008

L’actualité de Spring et de SpringSource tourne autour de la plateforme

SpringSource jette un pavé dans la mare !Comme avec Spring en 2003-2004

SpringSource sort du sentier battu des standards JEE

Cible de la “fronde” : le modèle de déploiement et les serveurs d’applications

Conclusion

Page 99: SQLI at SpringOne08

Spring One 200899

Spring One 2008

Le modèle S2AP est intéressant de par ses cotés

ModulaireDynamiqueSans oublier le versionning

Le modèle reste encore jeuneMais devrait évoluer très rapidement (dans les mois qui viennent)

Les autres serveurs d’applications et les standards vont-ils suivre ?

Conclusion

Page 100: SQLI at SpringOne08

Spring One 2008100

Spring One 2008

Les grands oubliés de cette restitutionL’AOPLe WebLa tools suite management

Spring est toujours actif dans ces domainesSpring MVC et consortsDéveloppement d’un projet JavaScriptSpring attaque les Rich Internet Applications

Mais l’actualité de l’année concernait le middleware !

Conclusion