JavaEE - Test & Deploy

2,762 views
2,691 views

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,762
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
68
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

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

×