![Page 1: OSF – Open source Framework 18.04.2012 Démonstration du proof of concept Framework Play 2.0 30.05.2012 Yverdon A. Nicolet et V. Clément OSF – Open source](https://reader036.vdocuments.mx/reader036/viewer/2022070309/551d9db5497959293b8d99f2/html5/thumbnails/1.jpg)
OSF – Open source Framework
18.04.2012
Démonstration du proof of concept
Framework Play 2.0 30.05.2012
Yverdon
A. Nicolet et V. Clément
OSF – Open source Framework
![Page 2: OSF – Open source Framework 18.04.2012 Démonstration du proof of concept Framework Play 2.0 30.05.2012 Yverdon A. Nicolet et V. Clément OSF – Open source](https://reader036.vdocuments.mx/reader036/viewer/2022070309/551d9db5497959293b8d99f2/html5/thumbnails/2.jpg)
OSF – Open source Framework
18.04.2012
• Cache distribué• Session de base avec Play• Cache distribué avec EHCache• Préparations niveau OS et logiciel• Cache distribué comme session
• Compilation à la volée• Accès EJB depuis Play
• Préparation• REST• RMI
• Conclusion
Programme
![Page 3: OSF – Open source Framework 18.04.2012 Démonstration du proof of concept Framework Play 2.0 30.05.2012 Yverdon A. Nicolet et V. Clément OSF – Open source](https://reader036.vdocuments.mx/reader036/viewer/2022070309/551d9db5497959293b8d99f2/html5/thumbnails/3.jpg)
OSF – Open source Framework
18.04.2012
• Play est stateless... • Session stockée dans un cookie
o Max 4Koo String onlyo Signé avec une clé secrète (lié à la clé de l'application)
// set in the sessionsession(key, value);
Cache distribuéSession de base avec Play
// get in the sessionString value = session(key);
![Page 4: OSF – Open source Framework 18.04.2012 Démonstration du proof of concept Framework Play 2.0 30.05.2012 Yverdon A. Nicolet et V. Clément OSF – Open source](https://reader036.vdocuments.mx/reader036/viewer/2022070309/551d9db5497959293b8d99f2/html5/thumbnails/4.jpg)
OSF – Open source Framework
18.04.2012
• La session de Play est bien stateless!
• Limitations:o limitations des cookies (4Ko, String only,...)o Valeur signées, mais en clair chez le client
• Pour parer aux limitations:o Le cache distribué
Cache distribuéSession de base avec Play
![Page 5: OSF – Open source Framework 18.04.2012 Démonstration du proof of concept Framework Play 2.0 30.05.2012 Yverdon A. Nicolet et V. Clément OSF – Open source](https://reader036.vdocuments.mx/reader036/viewer/2022070309/551d9db5497959293b8d99f2/html5/thumbnails/5.jpg)
OSF – Open source Framework
18.04.2012
• EHCache est utilisé de base dans Play!// set in the cacheCache.set(key, value);// get in the cacheString cachedValue = (String) Cache.get(key);
• Configuration de base écrasable (conf/ehcache.xml)
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd" updateCheck="false"> <cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory" properties="peerDiscovery=automatic, multicastGroupAddress=230.0.0.1, multicastGroupPort=4446, timeToLive=32"/> <cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory" properties="hostName=localhost, port=40001, socketTimeoutMillis=2000"/> <!-- the port needs to be different on every node! Otherwise, all the configuration can be identical on every node --> <defaultCache name="distribCache" maxEntriesLocalHeap="10" eternal="false" timeToIdleSeconds="100" timeToLiveSeconds="100" overflowToDisk="false"> <cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" properties="replicateAsynchronously=true, replicatePuts=true, replicateUpdates=true, replicateUpdatesViaCopy=true, replicateRemovals=true "/> </defaultCache></ehcache>
Cache distribuéCache distribué avec EHCache
![Page 6: OSF – Open source Framework 18.04.2012 Démonstration du proof of concept Framework Play 2.0 30.05.2012 Yverdon A. Nicolet et V. Clément OSF – Open source](https://reader036.vdocuments.mx/reader036/viewer/2022070309/551d9db5497959293b8d99f2/html5/thumbnails/6.jpg)
OSF – Open source Framework
18.04.2012
Cache distribuéArchitecture de tests
http://playtest.lohttp://localhost:9999
http://localhost:9998
virtual host avec load balancer
![Page 7: OSF – Open source Framework 18.04.2012 Démonstration du proof of concept Framework Play 2.0 30.05.2012 Yverdon A. Nicolet et V. Clément OSF – Open source](https://reader036.vdocuments.mx/reader036/viewer/2022070309/551d9db5497959293b8d99f2/html5/thumbnails/7.jpg)
OSF – Open source Framework
18.04.2012
• Nom de domaine "playtest.lo" dans le fichier hosts• Activation du multicast sur l'interface lo0• Virtual host apache avec load balancing• Checkout du projet depuis le SVN: poc1• Checkout du projet depuis le SVN: poc2• Deux changement à faire dans poc2:
o Numéro de port du cacheManagerPeerListenerFactoryo Titre des pages pour différenciation
• Démarrage des deux noeuds avec playo http://localhost:9999o http://localhost:9998
Cache distribuéPréparation au niveau de l'OS
![Page 8: OSF – Open source Framework 18.04.2012 Démonstration du proof of concept Framework Play 2.0 30.05.2012 Yverdon A. Nicolet et V. Clément OSF – Open source](https://reader036.vdocuments.mx/reader036/viewer/2022070309/551d9db5497959293b8d99f2/html5/thumbnails/8.jpg)
OSF – Open source Framework
18.04.2012
• Play reste stateless, même avec un cache distribué• Limitation: le cache est commun à tous les utilisateurs• Possibilité d'écrire des POJO dans le cache• Avec un simple frontend Apache, facile de:
o Monter en charge en “copiant” les applicationso Faire de la maintenance sur l’application en maintenant le noeud 1 et
laissant les requêtes durant un moment sur le noeud 2• Problèmes de ports bloqués pour le multicast...• Cache Inactif si l'application n'a pas été activée (en dév)• Cache warming ne fonctionne pas toujours...• Pour parer aux limitations:
o Combiner la session de base (cookie) de Play avec le cache distribuéo Stockage d'un UUID dans la session et utilisation pour chacque accès
au cacheo Utiliser la découverte manuelle
Cache distribuéCache distribué avec EHCache - Conclusion
![Page 9: OSF – Open source Framework 18.04.2012 Démonstration du proof of concept Framework Play 2.0 30.05.2012 Yverdon A. Nicolet et V. Clément OSF – Open source](https://reader036.vdocuments.mx/reader036/viewer/2022070309/551d9db5497959293b8d99f2/html5/thumbnails/9.jpg)
OSF – Open source Framework
18.04.2012
• Play est stateless, même avec une session distribuée
• Petit "hack" nécessaire pour y parvenir// the uuid use to differenciate elements in the global cacheString uuid = form.get().uuid;// set in the cacheCache.set(uuid + key, value);
• Manipulation du cache limité par les interfaces de Play
Cache distribuéCache distribué comme session - Conclusion
![Page 10: OSF – Open source Framework 18.04.2012 Démonstration du proof of concept Framework Play 2.0 30.05.2012 Yverdon A. Nicolet et V. Clément OSF – Open source](https://reader036.vdocuments.mx/reader036/viewer/2022070309/551d9db5497959293b8d99f2/html5/thumbnails/10.jpg)
OSF – Open source Framework
18.04.2012
• Une application toute simple, avec 3 états
Compilation à la voléePrincipe
Index StateA
StateBStateC
next step
next step
next stepnext step (finish)
![Page 11: OSF – Open source Framework 18.04.2012 Démonstration du proof of concept Framework Play 2.0 30.05.2012 Yverdon A. Nicolet et V. Clément OSF – Open source](https://reader036.vdocuments.mx/reader036/viewer/2022070309/551d9db5497959293b8d99f2/html5/thumbnails/11.jpg)
OSF – Open source Framework
18.04.2012
Compilation à la voléeConclusion
• Changements rapide avec le mode développement
• Seul les éléments modifiés sont recompilés
• Fichiers de configurations interprétés en direct
• Scénario de mise à jour pour garantir la disponibilité
![Page 12: OSF – Open source Framework 18.04.2012 Démonstration du proof of concept Framework Play 2.0 30.05.2012 Yverdon A. Nicolet et V. Clément OSF – Open source](https://reader036.vdocuments.mx/reader036/viewer/2022070309/551d9db5497959293b8d99f2/html5/thumbnails/12.jpg)
OSF – Open source Framework
18.04.2012
Play est très complet et permet d'utiliser tout les repository Maven, Ivy ou git dans ses dépendances.
Le fichier de dépendances Build.scala
Accès EJB depuis PlayREST vs RMI
![Page 13: OSF – Open source Framework 18.04.2012 Démonstration du proof of concept Framework Play 2.0 30.05.2012 Yverdon A. Nicolet et V. Clément OSF – Open source](https://reader036.vdocuments.mx/reader036/viewer/2022070309/551d9db5497959293b8d99f2/html5/thumbnails/13.jpg)
OSF – Open source Framework
18.04.2012
Utilisation de Jersey pour exposé le Session Bean via une API REST
Accès simple via le browser
Accès EJB depuis PlayREST
![Page 14: OSF – Open source Framework 18.04.2012 Démonstration du proof of concept Framework Play 2.0 30.05.2012 Yverdon A. Nicolet et V. Clément OSF – Open source](https://reader036.vdocuments.mx/reader036/viewer/2022070309/551d9db5497959293b8d99f2/html5/thumbnails/14.jpg)
OSF – Open source Framework
18.04.2012
Utilisation du client Jersey pour un appel depuis Play
Accès EJB depuis PlayREST
![Page 15: OSF – Open source Framework 18.04.2012 Démonstration du proof of concept Framework Play 2.0 30.05.2012 Yverdon A. Nicolet et V. Clément OSF – Open source](https://reader036.vdocuments.mx/reader036/viewer/2022070309/551d9db5497959293b8d99f2/html5/thumbnails/15.jpg)
OSF – Open source Framework
18.04.2012
Accès EJB depuis PlayREST
![Page 16: OSF – Open source Framework 18.04.2012 Démonstration du proof of concept Framework Play 2.0 30.05.2012 Yverdon A. Nicolet et V. Clément OSF – Open source](https://reader036.vdocuments.mx/reader036/viewer/2022070309/551d9db5497959293b8d99f2/html5/thumbnails/16.jpg)
OSF – Open source Framework
18.04.2012
Exportation du Spring Bean en service RMI
Accès EJB depuis PlayRMI (Spring Remote) - Bean Side
![Page 17: OSF – Open source Framework 18.04.2012 Démonstration du proof of concept Framework Play 2.0 30.05.2012 Yverdon A. Nicolet et V. Clément OSF – Open source](https://reader036.vdocuments.mx/reader036/viewer/2022070309/551d9db5497959293b8d99f2/html5/thumbnails/17.jpg)
OSF – Open source Framework
18.04.2012
Fichier de configuration dans "/conf"
Accès EJB depuis PlayRMI (Spring Remote) - Play Side
Dépendances dans project/Build.scala
![Page 18: OSF – Open source Framework 18.04.2012 Démonstration du proof of concept Framework Play 2.0 30.05.2012 Yverdon A. Nicolet et V. Clément OSF – Open source](https://reader036.vdocuments.mx/reader036/viewer/2022070309/551d9db5497959293b8d99f2/html5/thumbnails/18.jpg)
OSF – Open source Framework
18.04.2012
Ajout de l'interface du Bean dans les sources du projet Play
Accès EJB depuis PlayRMI (Spring Remote) - Play Side
Import des éléments nécessaire depuis le framework Spring
Appel sur le Spring Bean via RMI
![Page 19: OSF – Open source Framework 18.04.2012 Démonstration du proof of concept Framework Play 2.0 30.05.2012 Yverdon A. Nicolet et V. Clément OSF – Open source](https://reader036.vdocuments.mx/reader036/viewer/2022070309/551d9db5497959293b8d99f2/html5/thumbnails/19.jpg)
OSF – Open source Framework
18.04.2012
Accès depuis notre application Play
Accès EJB depuis PlayRMI (Spring Remote) - Play Side
![Page 20: OSF – Open source Framework 18.04.2012 Démonstration du proof of concept Framework Play 2.0 30.05.2012 Yverdon A. Nicolet et V. Clément OSF – Open source](https://reader036.vdocuments.mx/reader036/viewer/2022070309/551d9db5497959293b8d99f2/html5/thumbnails/20.jpg)
OSF – Open source Framework
18.04.2012
Accès EJB depuis PlayRésultat JMeter
Conclusion:
Exposition d'un Session Bean en REST avec accès depuis Play est plus simple à mettre en place et possède des performances similaires à un appel RMI.
![Page 21: OSF – Open source Framework 18.04.2012 Démonstration du proof of concept Framework Play 2.0 30.05.2012 Yverdon A. Nicolet et V. Clément OSF – Open source](https://reader036.vdocuments.mx/reader036/viewer/2022070309/551d9db5497959293b8d99f2/html5/thumbnails/21.jpg)
OSF – Open source Framework
18.04.2012
On peut tout faire avec Play ! Il suffit de mettre la main à la pâte et d'y passer du temps !
Le code est les documentations sont disponibles ici:http://code.google.com/p/stateless-and-live-updates-for-play/
Conclusion