Déploiement d'une application Java EE dans Azure
-
Upload
jose-paumard -
Category
Education
-
view
647 -
download
3
Transcript of Déploiement d'une application Java EE dans Azure
Déployer une application Java EE dans Azure José Paumard @JosePaumard Sébastien Pertus @SebastienPertus
tech.days 2015 #mstechdays #JEEAzure
#JEEAzure
Déployer 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
tech.days 2015 #mstechdays #JEEAzure
Pourquoi vouloir déployer une application Java EE dans Azure ?
Déployer 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
tech.days 2015 #mstechdays #JEEAzure
Pour une application Java EE :
Déployer 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
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
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
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
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
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
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
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
tech.days 2015 #mstechdays #JEEAzure
SQL Database
Déployer 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
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
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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
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 ; }
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 ; }
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 ; }
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 ; }
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() ; } }
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() ; } }
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() ; } }
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() ; } } }
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() ; } } }
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() ; } } }
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() ; } } }
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() ; } } }
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 }
tech.days 2015 #mstechdays #JEEAzure
Présentation de l’IHM (MVC)
Déployer une application Java EE dans Azure
tech.days 2015 #mstechdays #JEEAzure
IaaS / PaaS
Déployer une application Java EE dans Azure
tech.days 2015 #mstechdays #JEEAzure Déployer une application Java EE dans Azure
tech.days 2015 #mstechdays #JEEAzure Déployer une application Java EE dans Azure
tech.days 2015 #mstechdays #JEEAzure
Application CRUD Service REST
Déployer 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
tech.days 2015 #mstechdays #JEEAzure
Questions ? Commentaires ? Interrogations ?
@JosePaumard @SebastienPertus
Déployer une application Java EE dans Azure
© 2015 Microsoft Corporation. All rights reserved.
tech days•2015
#mstechdays techdays.microsoft.fr