JavaEE    Test & Deploy17 janvier 2012            Alexis Hassler
CloudComputing            Tests dintégration             Arquillian
@AlexisHassler
Arquillian
JavaEEJAX-WS     JAX-RS   JPAServlet            EJB     JNDI JSP            CDI     JMS JSF
TestsUnitaire           Intégration
Test unitaire       new       mock
✔   EJB
Test dintégrationComposant déployé dans sonconteneur–   Mode embarqué–   Déploiement distant
EJB Mode embarquéEJBContainer.createEJBContainer()Context.lookup(...)
Spring FrameworkRunner–   Démarrer lApplicationContext                 @RunWith                 @Autowired
CDIWeld SE–   Runner maison    cf. http://blog.alexis-hassler.com/2011/01/junit-runner-pour-cdi-weld.html                 ...
JPA   Conteneur JPAPersistence.createEntityManagerFactory(...)           .createEntityManager()
JMS    Conteneur autonomenew ActiveMQConnectionFactory( ... );     "vm://localhost?broker.persistent=false"
HTTP / Servlet / JSP / ...Conteneur autonome      new ServletTester()      new HttpTester()
✔   EJB / OpenEJB
Problèmes1 conteneur par technologie–   Pas de mode embarqué universelMode remote + Maven–   pas dans le cycle de vie stan...
JavaEEJAX-WS     JAX-RS   JPAServlet            EJB     JNDI JSP            CDI     JMS JSF
JavaEE                             JMS       JAX-RS                                    Transaction                        ...
Tester les composants   pas les classes isolées    pas toute lapplication
Mettre lestests dans le conteneur gérer le conteneur dans les tests             plutôt que
Structure dun test@RunWith(Arquillian.class)@Deployment@EJB, @Inject, @Resource@Test
✔   EJB / OpenEJB
ConteneursJavaEE                 CDI–   JBoss AS,           –   Weld SE,–   GlassFish,          –   Weld EE,–   Websphere ...
Conteneurs                                      DeployableContainerShrinkWrap                     Arquillian              ...
ConteneursClasspathProfil maven
✔   EJB / Glassfish Embedded✔   CDI / Glassfish Embedded       ✔   CDI / Weld SE
ConteneursRemote           Managed                      Embedded
Conteneur embarquéDémarrage du conteneur     (in-process)         Déploiement de larchive                            Exécu...
Conteneur géréDémarrage du conteneur    (out-process)         Déploiement de larchive                    Déploiement du se...
Conteneur distant      Conteneurpréalablement démarré        Déploiement de larchive                  Déploiement du servi...
Conteneurs                     Remote                Managed                 EmbeddedJBoss AS       4.2, 5.0, 5.1, 6.0, 7....
✔   EJB / JBoss AS 7 managed    ✔   EJB / JBoss AS 7 remote
Shrinkwrap                                      DeployableContainerShrinkWrap                     Arquillian              ...
Protocole Servlet                 ShrinkWrap.create(WebArchive.class)                           .addClasses(...);         ...
Protocole Servlet 3.0                   ShrinkWrap.create(JavaArchive.class)                             .addClasses(...);...
Protocole Servlet 2.5                   ShrinkWrap.create(JavaArchive.class)                             .addClasses(...);...
Protocole Servlet              ShrinkWrap.create(EnterpriseArchive.class)                        .addAsModule(jar);       ...
Protocole JMX-AS7                 ShrinkWrap.create(XxxArchive.class)                           .addClasses(...);         ...
✔   EJB / deploymentExportPath
as-clientWeb, JAX-RS, JAX-WS,RMI, EJB remote,...                Web Archive  JUnitArquillianTest case
as-client@ArquillianResource(MyServlet.class)URL baseURL ;@Deployment(testable=false)public static Archive createDeploymen...
✔   JAX-RS / JBoss AS 7 managed
ArquillianTest dintégrationIn-containerAs-clientMulti-conteneurs
Référenceshttp://jboss.org/arquillianhttp://github.com/arquillianhttp://github.com/hasalex/arquillian-demohttp://www.slide...
CloudComputing            Tests dintégration             Arquillian
Cloud ComputingDéfinition–   En libre-service à la demande–   Accessible sur lensemble dun réseau–   Mutualisation des res...
SaaSVision utilisateur–   Fonctionnalités dun logiciel (Mail, CRM, ERP,...)–   Pas dinstallation, pas dinvestissement–   M...
SaaS           Application   Runtime / middleware     Base de données   Système dexploitation       VirtualisationMatériel...
IaaSVision sysadmin–   Ressources système    (processeur, mémoire, bande passante)–   Pas dachat de machine–   Montée en c...
IaaS           Application   Runtime / middleware     Base de données   Système dexploitation       VirtualisationMatériel...
Amazon                      AWScf. http://media.amazonwebservices.com/AWS_Cloud_Best_Practices.pdf
Amazon                         AWSAmazon EC2–   Elastic Compute Cloud–   Serveur virtuel–   Stockage sur Elastic Block Sto...
Amazon                    AWSGestion–   Console Web–   SDK / ligne de commande
Amazon EC2✔   Web UI    ✔   CLI
PaaSNiveaux de service                    SaaS            Software as a Service                    PaaS            Platfor...
PaaS           Application   Runtime / middleware     Base de données   Système dexploitation       VirtualisationMatériel...
PaaS
Cloubees          DEV@cloud                         RUN@cloud                                            Elastic AppSource...
CloubeesDev@Cloud               Test    Build              Deploy
3: checkout2: build           1: push
CloubeesRun@Cloud            PaaS tools        Applications Server               JVM
CloubeesGestion RUN@cloud Interface Web API RESTful (HTTP / XML) API Java
CloudBees    ✔   Web UI✔       Java API
Cloud          SaaS  Software as a Service                                     User          PaaS  Platform as a Service  ...
Cloud           SaaS    Software as a Service           PaaS           IaaS
Référenceshttp://aws.amazon.comhttp://www.cloudbees.comhttps://github.com/hasalex/cloudbees-examplehttp://www.slideshare.n...
CloudComputing            Tests dintégration             Arquillian
JavaEE - Test & Deploy
JavaEE - Test & Deploy
JavaEE - Test & Deploy
JavaEE - Test & Deploy
Upcoming SlideShare
Loading in...5
×

JavaEE - Test & Deploy

2,594

Published on

Formation INSA, le 17 janvier 2012

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,594
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
68
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "JavaEE - Test & Deploy"

  1. 1. JavaEE Test & Deploy17 janvier 2012 Alexis Hassler
  2. 2. CloudComputing Tests dintégration Arquillian
  3. 3. @AlexisHassler
  4. 4. Arquillian
  5. 5. JavaEEJAX-WS JAX-RS JPAServlet EJB JNDI JSP CDI JMS JSF
  6. 6. TestsUnitaire Intégration
  7. 7. Test unitaire new mock
  8. 8. ✔ EJB
  9. 9. Test dintégrationComposant déployé dans sonconteneur– Mode embarqué– Déploiement distant
  10. 10. EJB Mode embarquéEJBContainer.createEJBContainer()Context.lookup(...)
  11. 11. Spring FrameworkRunner– Démarrer lApplicationContext @RunWith @Autowired
  12. 12. CDIWeld SE– Runner maison cf. http://blog.alexis-hassler.com/2011/01/junit-runner-pour-cdi-weld.html @RunWith @Inject
  13. 13. JPA Conteneur JPAPersistence.createEntityManagerFactory(...) .createEntityManager()
  14. 14. JMS Conteneur autonomenew ActiveMQConnectionFactory( ... ); "vm://localhost?broker.persistent=false"
  15. 15. HTTP / Servlet / JSP / ...Conteneur autonome new ServletTester() new HttpTester()
  16. 16. ✔ EJB / OpenEJB
  17. 17. Problèmes1 conteneur par technologie– Pas de mode embarqué universelMode remote + Maven– pas dans le cycle de vie standardConfigurations spécifiques
  18. 18. JavaEEJAX-WS JAX-RS JPAServlet EJB JNDI JSP CDI JMS JSF
  19. 19. JavaEE JMS JAX-RS Transaction EJBServlet CDI JPA JSF Bean Validation
  20. 20. Tester les composants pas les classes isolées pas toute lapplication
  21. 21. Mettre lestests dans le conteneur gérer le conteneur dans les tests plutôt que
  22. 22. Structure dun test@RunWith(Arquillian.class)@Deployment@EJB, @Inject, @Resource@Test
  23. 23. ✔ EJB / OpenEJB
  24. 24. ConteneursJavaEE CDI– JBoss AS, – Weld SE,– GlassFish, – Weld EE,– Websphere AS – OpenWebBeansWeb EJB– Jetty, – Apache OpenEJB– Tomcat
  25. 25. Conteneurs DeployableContainerShrinkWrap Arquillian ConteneurTest Case junit-container JUnit
  26. 26. ConteneursClasspathProfil maven
  27. 27. ✔ EJB / Glassfish Embedded✔ CDI / Glassfish Embedded ✔ CDI / Weld SE
  28. 28. ConteneursRemote Managed Embedded
  29. 29. Conteneur embarquéDémarrage du conteneur (in-process) Déploiement de larchive Exécution locale du test Retrait de larchive Arrêt du conteneur
  30. 30. Conteneur géréDémarrage du conteneur (out-process) Déploiement de larchive Déploiement du service Arquillian Exécution du test dans le conteneur Retrait de larchive Arrêt du conteneur
  31. 31. Conteneur distant Conteneurpréalablement démarré Déploiement de larchive Déploiement du service Arquillian Exécution du test dans le conteneur Retrait de larchive
  32. 32. Conteneurs Remote Managed EmbeddedJBoss AS 4.2, 5.0, 5.1, 6.0, 7.0 4.2, 5.1, 6.0, 7.0 5.1, 6.0Glassfish 3.1 3.1Websphere AS 7.0 8.0Jetty 6.1, 7.0Tomcat 6.0 6.0Weld SE 1.1, SE 1.0, EE 1.1OpenWebBeans 1.0OpenEJB 3.1
  33. 33. ✔ EJB / JBoss AS 7 managed ✔ EJB / JBoss AS 7 remote
  34. 34. Shrinkwrap DeployableContainerShrinkWrap Arquillian ConteneurTest Case junit-container JUnit
  35. 35. Protocole Servlet ShrinkWrap.create(WebArchive.class) .addClasses(...); Web Archive JUnitArquillian Test case Arquillian Servlet
  36. 36. Protocole Servlet 3.0 ShrinkWrap.create(JavaArchive.class) .addClasses(...); Web Archive JUnitArquillian Test case Arquillian Servlet
  37. 37. Protocole Servlet 2.5 ShrinkWrap.create(JavaArchive.class) .addClasses(...); Arquillian ear Java Archive JUnitArquillian Test case Arquillian war Arquillian Servlet
  38. 38. Protocole Servlet ShrinkWrap.create(EnterpriseArchive.class) .addAsModule(jar); ShrinkWrap.create(JavaArchive.class) .addClasses(...); Enterprise Archive Java Archive JUnitArquillian Test case Arquillian war Arquillian Servlet
  39. 39. Protocole JMX-AS7 ShrinkWrap.create(XxxArchive.class) .addClasses(...); JBoss AS 7 Any Archive JUnitArquillian Test case Arquillian Service Arquillian MBean
  40. 40. ✔ EJB / deploymentExportPath
  41. 41. as-clientWeb, JAX-RS, JAX-WS,RMI, EJB remote,... Web Archive JUnitArquillianTest case
  42. 42. as-client@ArquillianResource(MyServlet.class)URL baseURL ;@Deployment(testable=false)public static Archive createDeployment() { ...}@Test @RunAsClientprivate void shouldDoX() { ...}
  43. 43. ✔ JAX-RS / JBoss AS 7 managed
  44. 44. ArquillianTest dintégrationIn-containerAs-clientMulti-conteneurs
  45. 45. Référenceshttp://jboss.org/arquillianhttp://github.com/arquillianhttp://github.com/hasalex/arquillian-demohttp://www.slideshare.net/sewatech
  46. 46. CloudComputing Tests dintégration Arquillian
  47. 47. Cloud ComputingDéfinition– En libre-service à la demande– Accessible sur lensemble dun réseau– Mutualisation des ressources– Rapidement élastique– Mesurable
  48. 48. SaaSVision utilisateur– Fonctionnalités dun logiciel (Mail, CRM, ERP,...)– Pas dinstallation, pas dinvestissement– Montée en charge simple– Software as a Service
  49. 49. SaaS Application Runtime / middleware Base de données Système dexploitation VirtualisationMatériel Stockage Réseau
  50. 50. IaaSVision sysadmin– Ressources système (processeur, mémoire, bande passante)– Pas dachat de machine– Montée en charge simple– Infrastructure as a Service
  51. 51. IaaS Application Runtime / middleware Base de données Système dexploitation VirtualisationMatériel Stockage Réseau
  52. 52. Amazon AWScf. http://media.amazonwebservices.com/AWS_Cloud_Best_Practices.pdf
  53. 53. Amazon AWSAmazon EC2– Elastic Compute Cloud– Serveur virtuel– Stockage sur Elastic Block Store (EBS) ● disque dur– Monitoring ● Amazon CloudWatch => Cœur d’AWS
  54. 54. Amazon AWSGestion– Console Web– SDK / ligne de commande
  55. 55. Amazon EC2✔ Web UI ✔ CLI
  56. 56. PaaSNiveaux de service SaaS Software as a Service PaaS Platform as a Service IaaS Infrastructure as a Service
  57. 57. PaaS Application Runtime / middleware Base de données Système dexploitation VirtualisationMatériel Stockage Réseau
  58. 58. PaaS
  59. 59. Cloubees DEV@cloud RUN@cloud Elastic AppSource Elastic App Jenkins Elastic AppControl Build/Test Deploy Push App Project
  60. 60. CloubeesDev@Cloud Test Build Deploy
  61. 61. 3: checkout2: build 1: push
  62. 62. CloubeesRun@Cloud PaaS tools Applications Server JVM
  63. 63. CloubeesGestion RUN@cloud Interface Web API RESTful (HTTP / XML) API Java
  64. 64. CloudBees ✔ Web UI✔ Java API
  65. 65. Cloud SaaS Software as a Service User PaaS Platform as a Service Developer Integration IaaSInfrastructure as a Service Operations
  66. 66. Cloud SaaS Software as a Service PaaS IaaS
  67. 67. Référenceshttp://aws.amazon.comhttp://www.cloudbees.comhttps://github.com/hasalex/cloudbees-examplehttp://www.slideshare.net/sewatech
  68. 68. CloudComputing Tests dintégration Arquillian
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×