Déploiement d'une application Java EE dans Azure

51
Déployer une application Java EE dans Azure José Paumard @JosePaumard Sébastien Pertus @SebastienPertus

Transcript of Déploiement d'une application Java EE dans Azure

Page 1: Déploiement d'une application Java EE dans Azure

Déployer une application Java EE dans Azure José Paumard @JosePaumard Sébastien Pertus @SebastienPertus

Page 2: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

#JEEAzure

Déployer une application Java EE dans Azure

Page 3: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

Podcast « les casts codeurs » http://lescastcodeurs.com/2014/10/26/lcc-111-interview-sur-microsoft-azure-avec-patrick-chanezon-et-benjamin-guinebertiere/

MOOC sur MVA http://www.microsoftvirtualacademy.com/training-courses/deploiement-application-java-dans-microsoft-azure

Patterns ! https://github.com/Azure/azure-sdk-for-java

Déployer une application Java EE dans Azure

Page 4: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

Pourquoi vouloir déployer une application Java EE dans Azure ?

Déployer une application Java EE dans Azure

Page 5: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

Pourquoi vouloir déployer une application Java EE dans Azure ?

Déployer une application Java EE dans Azure

Page 6: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

Pour une application Java EE :

Déployer une application Java EE dans Azure

Page 7: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

Outils de développement pour le « Javaiste » IHM de gestion d’Azure, configuration, monitoring Gestion de données structurées / non structurées Application jouet Modes de déploiement de l’application Démo de l’application Q / R

Déployer une application Java EE dans Azure

Page 8: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

Eclipse Java EE « classique »

+ plugin spécifique Azure

Ressource Github https://github.com/azure

Déployer une application Java EE dans Azure

Page 9: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

Java EE = jeu de spécifications Java EE = du papier ! Du papier + une implémentation de référence JPA → EclipseLink JAX-RS → Jersey JSF → Mojara

Déployer une application Java EE dans Azure

Page 10: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

Organisation

Déployer une application Java EE dans Azure

Portable extensions

JSP 2.3 JSF 2.2 JAX RS 2 EL 3

Servlet 3.1

Managed Beans 1.0 EJB 3.2

JCA 1.7 JPA 2.1 JTA 2.1 JMS 2.0

Interceptors 1.1 CDI 1.1 Common annotations 1.1

Bean

Val

idat

ion

1.1

Concurrency utilities

Batch applications

Java API for JSON

Java API for Websocket

Page 11: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

Organisation

Déployer une application Java EE dans Azure

Portable extensions

JSP 2.3 JSF 2.2 JAX RS 2 EL 3

Servlet 3.1

Managed Beans 1.0 EJB 3.2

JCA 1.7 JPA 2.1 JTA 2.1 JMS 2.0

Interceptors 1.1 CDI 1.1 Common annotations 1.1

Bean

Val

idat

ion

1.1

Concurrency utilities

Batch applications

Java API for JSON

Java API for Websocket

Page 12: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

Organisation

Déployer une application Java EE dans Azure

Portable extensions

JSP 2.3 JSF 2.2 JAX RS 2 EL 3

Servlet 3.1

Managed Beans 1.0 EJB 3.2

JCA 1.7 JPA 2.1 JTA 2.1 JMS 2.0

Interceptors 1.1 CDI 1.1 Common annotations 1.1

Bean

Val

idat

ion

1.1

Concurrency utilities

Batch applications

Java API for JSON

Java API for Websocket

Page 13: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

Organisation

Déployer une application Java EE dans Azure

Portable extensions

JSP 2.3 JSF 2.2 JAX RS 2 EL 3

Servlet 3.1

Managed Beans 1.0 EJB 3.2

JCA 1.7 JPA 2.1 JTA 2.1 JMS 2.0

Interceptors 1.1 CDI 1.1 Common annotations 1.1

Concurrency utilities

Batch applications

Java API for JSON

Java API for Websocket

Bean

Val

idat

ion

1.1

Page 14: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

JPA, EJB, JAX-RS, JAX-WS JSF (si on l’utilise) JMS ? Java Mail ? Journalisation ? → On peut utiliser directement des services cloud

Déployer une application Java EE dans Azure

Page 15: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

SQL Database

Déployer une application Java EE dans Azure

Page 16: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

Deux versions de Java EE Tomcat implémente le « web profile »

Wildfly (JBoss), Glassfish, Weblogic, Websphere, implémentent le « full profile »

Déployer une application Java EE dans Azure

Page 17: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

Accès aux données (JPA) Couche de service (EJB) Services REST (JAX-RS) IHM (JSF) Stockage d’images en BLOB

Déployer une application Java EE dans Azure

Page 18: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

« Entité » JPA

Déployer une application Java EE dans Azure

public class Musician { private String name ; private Date dateOfBirth ; private MusicType musicType ; // getters / setters }

Page 19: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

« Entité » JPA

Déployer une application Java EE dans Azure

public class Musician { private Long id ; private String name ; private Date dateOfBirth ; private MusicType musicType ; // getters / setters }

Page 20: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

« Entité » JPA

Déployer une application Java EE dans Azure

@Entity public class Musician { @Id private Long id ; private String name ; private Date dateOfBirth ; private MusicType musicType ; // getters / setters }

Page 21: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

« Entité » JPA

Déployer une application Java EE dans Azure

@Entity public class Musician { @Id @GeneratedValue(strategy=GenerationType.AUTO) private Long id ; private String name ; private Date dateOfBirth ; private MusicType musicType ; // getters / setters }

Page 22: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

« Entité » JPA

Déployer une application Java EE dans Azure

@Entity public class Musician { @Id @GeneratedValue(strategy=GenerationType.AUTO) private Long id ; private String name ; @Temporal(TemporalType.DATE) private Date dateOfBirth ; private MusicType musicType ; // getters / setters }

Page 23: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

« Entité » JPA

Déployer une application Java EE dans Azure

@Entity public class Musician { @Id @GeneratedValue(strategy=GenerationType.AUTO) private Long id ; @Column(name="name") private String name ; @Temporal(TemporalType.DATE) private Date dateOfBirth ; private MusicType musicType ; // getters / setters }

Page 24: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

« Entité » JPA

Déployer une application Java EE dans Azure

@Entity public class Musician { @Id @GeneratedValue(strategy=GenerationType.AUTO) private Long id ; @Column(name="name") private String name ; @Temporal(TemporalType.DATE) private Date dateOfBirth ; @Enumerated(EnumType.STRING) private MusicType musicType ; // getters / setters }

public enum MusicType { JAZZ, CLASSICAL, ROCK, FOLK }

Page 25: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

« Entité » JPA

Déployer une application Java EE dans Azure

@Entity public class Musician { @OneToMany private List<Instrument> instruments ; // getters / setters }

Page 26: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

« Entité » JPA

Déployer une application Java EE dans Azure

@Entity public class Musician { @OneToMany private List<Instrument> instruments ; @ManyToMany private List<Orchestra> orchestras ; // getters / setters }

Page 27: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

« Entité » JPA

Déployer une application Java EE dans Azure

@Entity public class Musician { @OneToMany private List<Instrument> instruments ; @ManyToMany private List<Orchestra> orchestras ; @Embedded private Address address ; // getters / setters }

Page 28: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

« Entité » JPA

Déployer une application Java EE dans Azure

@Entity public class Musician { @OneToMany private List<Instrument> instruments ; @ManyToMany private List<Orchestra> orchestras ; @Embedded private Address address ; @Column(name="email", length=80) private String email ; // getters / setters }

Page 29: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

« Entité » JPA

Déployer une application Java EE dans Azure

@Entity public class Musician { @OneToMany private List<Instrument> instruments ; @ManyToMany private List<Orchestra> orchestras ; @Embedded private Address address ; @Column(name="email", length=80) @Email private String email ; // getters / setters }

Page 30: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

Gestion des relations *:* Gestion de l’héritage Génération du schéma Adaptation à un schéma existant Gestion des requêtes SQL / JPQL Configuration par annotations ou XML

Déployer une application Java EE dans Azure

Page 31: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure Déployer une application Java EE dans Azure

Injection / production @Stateless public class EntityManagerProvider { @PersistenceContext(unitName="DataService") private static EntityManager entityManager ; }

Page 32: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure Déployer une application Java EE dans Azure

Injection / production @Stateless public class EntityManagerProvider { @Produces @PersistenceContext(unitName="DataService") private static EntityManager entityManager ; }

Page 33: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure Déployer une application Java EE dans Azure

Injection / production @Stateless public class EntityManagerProvider { @Produces @PersistenceContext(unitName="DataService") private static EntityManager entityManager ; }

@Stateless public class MusicianService { @Inject private EntityManager em ; }

Page 34: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure Déployer une application Java EE dans Azure

Injection / production @Stateless public class EntityManagerProvider { @Produces @DBProd @PersistenceContext(unitName="DataService") private static EntityManager entityManager ; }

@Stateless public class MusicianService { @Inject @DBProd private EntityManager em ; }

Page 35: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

Implémentées par des EJB

Déployer une application Java EE dans Azure

public class MusicianService { private EntityManager em ; public Musician findById(long id) { return em.find(Musician.class, id) ; } public List<Musician> findByName(String name) { Query q = em.createNamedQuery("Musician.byName") ; q.setParam("name", name) ; return q.getResultList() ; } }

Page 36: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

Implémentées par des EJB

Déployer une application Java EE dans Azure

@Stateless public class MusicianService { @Inject private EntityManager em ; public Musician findById(long id) { return em.find(Musician.class, id) ; } public List<Musician> findByName(String name) { Query q = em.createNamedQuery("Musician.byName") ; q.setParam("name", name) ; return q.getResultList() ; } }

Page 37: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

Implémentées par des EJB

Déployer une application Java EE dans Azure

@Stateless public class MusicianService { @Inject private EntityManager em ; @Transactionnal(TxType.SUPPORTS) public Musician findById(long id) { return em.find(Musician.class, id) ; } @Transactionnal(TxType.SUPPORTS) public List<Musician> findByName(String name) { Query q = em.createNamedQuery("Musician.byName") ; q.setParam("name", name) ; return q.getResultList() ; } }

Page 38: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

JAX-RS

Déployer une application Java EE dans Azure

public class MusicianRestService { private MusicianService musicianService ; public Response getById( long id) { Musician musician = musicianService.findById(id) ; if (musician == null) { return Response.status(Status.NOT_FOUND).build() ; } else { return Response.ok(musician).build() ; } } }

Page 39: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

JAX-RS

Déployer une application Java EE dans Azure

@Path("musician") public class MusicianRestService { @Inject private MusicianService musicianService ; @Path("{id}") // /musician/23 public Response getById( long id) { Musician musician = musicianService.findById(id) ; if (musician == null) { return Response.status(Status.NOT_FOUND).build() ; } else { return Response.ok(musician).build() ; } } }

Page 40: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

JAX-RS

Déployer une application Java EE dans Azure

@Path("musician") public class MusicianRestService { @Inject private MusicianService musicianService ; @Path("{id}") // /musician/23 public Response getById(@PathParam("id") long id) { Musician musician = musicianService.findById(id) ; if (musician == null) { return Response.status(Status.NOT_FOUND).build() ; } else { return Response.ok(musician).build() ; } } }

Page 41: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

JAX-RS

Déployer une application Java EE dans Azure

@Path("musician") public class MusicianRestService { @Inject private MusicianService musicianService ; @Path("{id}") // /musician/23 @GET public Response getById(@PathParam("id") long id) { Musician musician = musicianService.findById(id) ; if (musician == null) { return Response.status(Status.NOT_FOUND).build() ; } else { return Response.ok(musician).build() ; } } }

Page 42: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

JAX-RS

Déployer une application Java EE dans Azure

@Path("musician") public class MusicianRestService { @Inject private MusicianService musicianService ; @Path("{id}") // /musician/23 @GET @Produces({MediaType.TEXT_XML, MediaType.APPLICATION_JSON}) public Response getById(@PathParam("id") long id) { Musician musician = musicianService.findById(id) ; if (musician == null) { return Response.status(Status.NOT_FOUND).build() ; } else { return Response.ok(musician).build() ; } } }

Page 43: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

JAX-RS / JAXB

Déployer une application Java EE dans Azure

@XmlRootElement @XmlAccessorType(XmlAccessType.FIELD) public class Musician { @XmlAttribute private Long id ; @XmlElement private String name ; @XmlElement(name="date-of-birth") private Date dateOfBirth ; private MusicType musicType ; // getters / setters }

Page 44: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

Présentation de l’IHM (MVC)

Déployer une application Java EE dans Azure

Page 45: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

IaaS / PaaS

Déployer une application Java EE dans Azure

Page 46: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure Déployer une application Java EE dans Azure

Page 47: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure Déployer une application Java EE dans Azure

Page 48: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

Application CRUD Service REST

Déployer une application Java EE dans Azure

Page 49: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

Azure offre une solution de déploiement d’application Java

Techniquement très complète et « à jour » Commercialement supportée

Donc oui, évaluer Azure lorsque l’on veut déployer

du Java dans le cloud, c’est intéressant !

Déployer une application Java EE dans Azure

Page 50: Déploiement d'une application Java EE dans Azure

tech.days 2015 #mstechdays #JEEAzure

Questions ? Commentaires ? Interrogations ?

@JosePaumard @SebastienPertus

Déployer une application Java EE dans Azure

Page 51: Déploiement d'une application Java EE dans Azure

© 2015 Microsoft Corporation. All rights reserved.

tech days•2015

#mstechdays techdays.microsoft.fr