TE1 (JAVA EE - Generals) Flashcards

1
Q

Qu’est-ce qui définit une application multi-tiers ?

A

☝🏼 Une application multi-tiers est distribuée. En général, il y a au moins une machine client et une machine serveur connectées sur un réseau.

👉🏼 Une entité utilise un appareil pour intéragir avec l’application.

Ex : User veut aller sur internet avec un browser avec son natel.

Ex : User veut taper une commande sur une interface de commande. L’entité peut tout aussi bien être un humain qu’un robot ou un script.

👉🏼 Les interactions utilisateurs déclenchent un appel à un service distant. Lorsqu’un user envoie une query ou une commande à un serveur à distance, ce dernier est fait avec un protocole d’application construit au-dessus d’un protocole de transport. Ca se traduit souvent par un payload JSON envoyé via HTTP.

👉🏼 La requête est traitée par une série de composants qui collaborent entre eux et se focus sur une tâche particulière.

👉🏼 Pendant le traitement d’une requête, une business logic est exécutée et l’état de l’application est consultée ou mis à jour. Finalement, une réponse est renvoyée au tiers “client” afin que l’utilisateur puisse avoir un feedback.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Dessiner un schéma de l’architecture de référence 5-tiers.

A

Cela laisse penser que :

👉🏼 Le tiers client est éloigné des autres tiers. (ils sont connectés par internet)

👉🏼 Les tiers présentation, business et intégration sont proches les uns des autres. (ils se trouvent souvent sur le même processus).

👉🏼 Les tiers présentation, business, intégration et ressources sont souvent connectés par le même réseau. (les appels de intégration et ressources sont en remote, mais cela coûte tjr moins cher que de faire passer des appels par internet.)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

En quoi consiste le tiers Client ?

A

👉🏼 Les composants sont très proches de l’utilisateur. 👉🏼 Les appareils utilisés (ex : laptop) fournissent un temps d’exécution pour nos composants d’application. Parfois c’est fait par un environnement plus haut niveau, comme un navigateur web qui présente nos pages ou run nos fonctions javascript.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

En quoi consiste le tiers Présentation ?

A

👉🏼 Le tiers présentation se trouve du côté serveur ou il met à dispo un point d’entrée.

👉🏼 Les composants de cet tiers traitent les requêtes (ex : HTTP), délègue le travail au tiers business et récoltent les données.

👉🏼 Ils fournissent les données aux vues qui sont renvoyées au tiers client.

Ex :

  • génération de pages HTML qui sont traitées par un navigateur du côté client. La page de navigation l’interface utilisateur sont contrôlées par le côté serveur.
  • Le tiers client génère des documents JSON qui sont par la suite traité par des composants javascript sur un navigateur. Dans ce cas, la page de navigation et l’interface utilisateur sont en partie maniées depuis le côté client. (ex : single page application).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

En quoi consiste le tiers Business ?

A

👉🏼 Ce tiers est séparé de l’interface utilisateur et n’est concerné que par la business logic.

👉🏼 Le même service peut traiter des requêtes venant de plusieurs channels d’interaction utilisateur.

Ex : sur un site de shopping, un panier peut être utilisé pour un utilisateur mobile et un utilisateur sur ordinateur.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

En quoi consiste le tiers intégration ?

A

👉🏼 Il contient les composants qui font le pont entre la logique business et les bases de données.

👉🏼 Il fournit une couche d’abstraction, ce qui signifie que les services business n’intéragissent pas directement avec les BDD. Ils le font via une application tiers.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

En quoi consiste le tiers ressource ?

A

👉🏼 contient les bases de données + dossiers des serveurs.

👉🏼 contient les systèmes externes qui font partie du système d’informations de l’entreprise.

👉🏼 Y a-t-il des composants d’application dans ce tiers ?

✔ Oui, si de la logique est placée dans la banque de données (ex : procédures dans une base de données relationnelle)

❌ Non, si la logique est placée dans le tiers business.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Expliquer ce qu’il se passe lorsqu’on déploie une application desktop avec une interface utilisateur graphique ou une interface en ligne de commande.

A

👉🏼 Le code tourne directement sur la machine virtuelle Java.

👉🏼 L’utilisateur recoit un fichier .jar contenant les classes compilées et les ressources.

Il exécute le code en tapant la commande “java -jar application.jar”

👉🏼 Lorsque la commande est exécutée, la JVM se lance, charge les classes et exécute la méthode main.

👉🏼 La combinaison de la JVM et de la librairie standard Java fournit un environnement d’exécution.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Citer au moins 3 serveurs d’applications.

A
  • Wildfly
  • JBoss
  • Glassfish
  • Payara (fork of the Glassfish codebase)
  • Apache Tomcat (pas vraiment un serveur d’application JavaEE parce qu’il n’implémente seulement un sous-groupe des API javaEE.
  • Apache TomEE (combinaison de Tomcat et OpenEJB/JPA, MyFaces pour remplir l’écart entre la version entière de JavaEE.)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Citer les deux façons de run un serveur d’applications.

A

👉🏼 via une image Docker.

  • Avantages
    • On peut démarrer en quelques minutes.
    • On peut créer un package et distribuer nos applications en créant des images Docker.

👉🏼 via une version locale du serveur d’applications.

Avantages :

  • Cela permet d’utiliser les outils de l’IDE et rnd le cycle de développement plus efficace.
  • facile à installer. On n’a qu’à extraire l’archive et la lancer via un script.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

À quoi sert un fichier .WAR ?

A

👉🏼 Un fichier WAR est un fichier utilisé pour distribuer une collection de fichiers JAR, de JSP, de servlets, de classes Java, de fichiers XML, de pages Web statiques) et d’autres ressources constituant une application Web.

👉🏼 Le fichier war peut être généré par les équipes de développement et donné ensuite aux équipes d’opérations qui s’occupent de configurer les serveurs d’applications (ou clusters de serveurs) et de déployer le .war.

👉🏼 Cette manière de faire n’est plus la plus populaire depuis la tendance DevOps, mais elle a d’autres avantages.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

À quoi sert un fichier JAR ?

A

👉🏼 utilisé pour stocker les définitions des classes, ainsi que des métadonnées, constituant l’ensemble d’un programme.

👉🏼 proposés pour les composants business.

  • Les composants sont découplés du tiers présentation et peuvent être réutiliser entre différent channels d’interface utilisateur.
  • Les composants intéragissent avec les bases de données, les applications existantes et les plateformes de messages.

Ex : Entreprise Java Beans (EJBs) a été développé pour ce but. EJBs sont packagés en fichier .jar.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

À quoi sert un fichier .EAR ?

A

👉🏼 Proposé pour les applications entières.

👉🏼 war + jar rassemblés. Il contient des meta-données.

👉🏼 Beaucoup d’équipes laissent tomber le format EAR au profit du format WAR car il est impossible de lier les EJBs avec le tiers présentation.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Comment déployer le même fichier .WAR dans 3 serveurs d’application ?

A

https://www.youtube.com/playlist?list=PLfKkysTy70QaWqP7sD6xiqFvLZemVLQw_

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Est-ce que Apache Tomcat est un serveur d’applications ?

A

Tomcat est un serveur Web et un conteneur Pages Servlet / JavaServer.

Il est souvent utilisé en tant que serveur d’applications pour des applications strictement Web, mais n’inclut pas l’ensemble des fonctionnalités qu’un serveur d’applications JavaEE fournit.

Par exemple : les EJBs

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Est-ce que le modèle de développement J2EE est un anti-pattern ?

A

La tendance actuelle est d’intégrer et de livrer de façon continue afin d’avoir un meilleur feedback et tester tout le processus de manière automatisée. De manière générale, il s’agit de livrer un produit de meilleure qualité.

On aime donc plus lier développement et opérations. Cela ne signifie pas que le modèle de développement de JavaEE est mauvais, mais il n’est plus tout à fait à la mode.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Quelle est la différence entre le tiers client et le tiers présentation ?

A

Le tiers client est ce qui se trouve du côté client comme par exemple le browser, les mobile app, command line tool etc.

Le tiers présentation est la partie serveur qui va communiquer avec le client (servlet), et lui fournir une réponse et des page html/jsp.

Le client demande des choses au tiers présentation, le tiers présentation fournit/affiche ce que le client veut.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

La plupart des serveurs d’applications proposent 3 façons de déployer un fichier .war. Décrire comment ces méthodes marchent et leurs bénéfices.

A
  1. On peut le faire manuellement depuis la console de notre serveur d’applications. Par exemple sur Payara il suffit d’aller dans le menu application et cliquer sur deploy et choisir notre fichier war.
    1. Inconvénient : Pas automatisé
    2. Avantage : Facile d’utilisation.
  2. On peut aussi faire un script qui s’occupe de faire la même chose de manière automatisée.
    1. Inconvénient : Très dépendant du serveur utilisé.
    2. Avantage : Automatisable
  3. Ou alors, de déposer le .war dans un dossier spécifique. Au lancement du serveur d’applications, le serveur va regarder ce dossier et déployer tout les fichiers .war qui y sont dedans.
    1. Inconvénient : ll faut redémarrer le serveur.
    2. Avantage : Automatisable, facile à changer pour un autre serveur
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Que signifie l’acronyme “AJAX” et quel est son lien avec le tiers client ?

A
  1. Asynchronous Javascript And XML
  2. Le tiers client peut effectuer des requêtes AJAX pour obtenir des informations du tiers présentation “à la carte et sur demande”.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Donner un exemple d’outli CLI qu’on utilise et dont il est le client d’une application multi-tiers.

A
  1. Git
  2. Heroku
  3. Docker
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Quelle est la différence entre les portées de la requête, de la session et de l’application dans l’API de servlet ?

A

👉🏼 Request scope : Avec la request scope, on est assuré qu’aucune autre request ne pourra affecter nos objets dans cette request scrope pendant son traitement.

👉🏼 Session scope : est associé à un utilisateur. Lorsqu’un utilisateur visite l’application Web, une session est créée par le conteneur Web. La durée de la session est donc conservée tant que l’utilisateur interagit avec l’application ou lorsque session.invalidate () est appelé.

👉🏼 Application Scope : ou scope global est associée à l’app web. Cette scope est active tant que l’app web est déployée.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

What is inversion of control? (IoC)

A

Dans un framework on instancie pas explicitement et manuellement nos objets. Ils sont managés automatiquement et notre code est appelé au bon moment.

Exemple: notre servlet se fait appelé sa méthode doGet lorsque l’app reçoit une requête HTTP GET.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

What is dependency injection?(DI)

A

Ça peut arriver qu’on aie besoin d’appeler la méthode d’une autre classe dans notre code. Mais comme on manipule des objets managés, et que parfois on peut avoir besoin de changer au runtime les comportements, on ne peut pas se contenter d’un import de package manuel.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

What is resource pooling and why is it useful? Explain with 2 examples

A

Resource pooling, in this context, applies to complicated objects that are expensive to instantiate.

By keeping a few instances in a pool, we avoid the cost of instantiation most of the time AND we limit the number of instances created at any given time.

For example, we can have a pool of database connection objects. When a user needs information from the DB, the server can give him an existing connection, and return it to the pool when it is done. No need to destroy the object and to instantiate it many times.

It also means we can ensure that the database won’t be overloaded by thousands of connections at the same time, since we have a max number of objects in the pool.

Different application servers manage pools differently.

25
Q

Quel est le but du Data Access Object pattern? (DAO)

A

Les DAO permettent de faire une couche d’abstraction entre l’application et la base de données. C’est dans les DAO que l’on définit les méthode d’accès au opération CRUD sur la DB.

Si on souhaite un jour changer de système de DB (SQL -> NoSQL), on aura juste à réécrire les DAO sans toucher au reste du code. Cela rend notre code robuste pour d’éventuelles évolutions.

26
Q

Qu’est-ce qu’un servlet ?

A

👉🏼 C’est un objet java qui implémente quelques méthodes qui sont invoqué lorsqu’une requête HTTP a été envoyé par le client.

👉🏼 La responsabilité du servlet et d’analyser la requête et de préparer la réponse. Il a ainsi accès à l’url, les headers HTTP, le corps, etc…)

27
Q

Qu’est-ce que l’annotation @WebServlet et à quoi sert-elle ?

A

👉🏼 C’est une instruction donnée au serveur d’application.

👉🏼 C’est une manière de déclarer que lorsqu’une requête HTTP entrante cible l’URL /quote, le serveur d’application doit la transmettre à ce servlet.

28
Q

Pourquoi voudrait-on garder le tiers présentation et business sur le même noeud ?

A

Invoquer un service distant prend plus de temps qu’invoquer un service local.

29
Q

Que signifie JavaEE et qu’est-ce que c’est ?

A

Java Enterprise Edition

  • C’est une plateforme de développement : elle met à disposition des APIs haut niveau pour développement des composants logiciels.
  • C’est une plateforme d’exécution : elle met à disposition un environnement pour déployer et donner vie aux composants.
  • C’est une plateforme d’entreprise : elle met à disposition un support pour les transactions, la sécurité, l’intégration, etc…

Le développeur s’occupe de la business logic, Java EE s’occupe des qualités du système.

JavaEE peut également être vu comme une spécification “umbrella” :

  • Java EE s’appuie sur d’autres spécifications (servlets, EJBs, JDBC, etc.) et précise quelles spécifications (et quelles versions) doivent être mises en œuvre.
  • Java EE définit également un modèle de programmation et définit les différents rôles.
30
Q

Qu’est-ce qu’un serveur d’application ?

A

👉🏼 le logiciel qui implément Java EE.

Exemple : Glassfish, JBoss, WebSphere, …

31
Q

Qu’est-ce qu’un container dans l’architecture Java EE ?

A

👉🏼 C’est un environnement dans lequel on déploie des composants.

👉🏼 Un container met à dispotion des services (transaction, sécurité, …) au travers d’APIs.

Exemple : container web, container EJB, container client (utilisé pour “rich clients”)

32
Q

Où se trouve le tiers client ?

A

👉🏼 Sur les dispositifs utilisateurs

Exemple : laptops, smartphone, browser, …

33
Q

Où se trouve le tiers présentation et que fait-il ?

A

👉🏼 Sur le serveur

👉🏼 Il prend ce que lui envoie le tiers Client et génère du contenu (HTML, JSON, PNG, …) qui est utilisé sur le tiers client.

👉🏼 Utilise le protocole HTTP.

34
Q

Dessiner un schéma du modèle “traditionnel” MVC représentant les intéractions entre le client et le serveur.

A
35
Q

Comment le client et le serveur communiquent-ils selon le modèle “Single Page Application” ?

A
36
Q

Quel est le moyen le plus simple de traiter une requête HTTP en Java EE ?

A

👉🏼 Une requête HTTP est envoyée par le client au serveur d’application.

👉🏼 Le serveur d’application regarde le premier élément de l’URL pour savoir quelle application doit s’occuper de la requête.

👉🏼 Un mapping servlet se fait pour savoir quel servlet s’occupe de la requête.

Le servlet a accès à la requête ainsi qu’à un objet “réponse”. Il peut accéder à des données HTTP (URL, payload, headers, …) via ces objets. Il peut également générer du HTML et l’envoyer via l’objet “réponse”.

37
Q

Que signifie MVC et que fait-il ? De quel côté est-il implémenté ?

A

👉🏼 Model View Controller

👉🏼 Model : capture l’état (et le comportement) d’un objet métier.

⭐ représenté par les JavaBean en JavaEE.

👉🏼 View : responsable de render le modèle et de le présenter à l’utilisateur. Elle génère du HTML, JSON, XML, PNG.

⭐ représenté par une page JSP en JavaEE.

👉🏼 Controller : réagit aux événements. Il sait :

  • déléguer le travail à un service..
  • déléguer le travail à un JSP.

⭐ représenté par un servlet en JavaEE.

👉🏼 Il peut être implémenté du côté client ou serveur.

38
Q

Dessiner un schéma représentant le pattern MVC implémenté avec les technologies JavaEE.

A
39
Q

Coder un servlet et une page JSP qui représentent le traitement d’une requête HTTP.

A
40
Q

Que sont les JSF ?

A

👉🏼 Java Server Faces

👉🏼 Ce sont des compléments à l’API du tiers présentation. Ils offrent un modèle de programmation orienté composant.

41
Q

Les demandes HTTP sont traitées en
un pipeline. Qu’est-ce que cela signifie ?

A

👉🏼 Les requêtes HTTP envoyées par le client sont reçues par le serveur d’application.

👉🏼 Le serveur d’application inspecte l’URL

👉🏼 Sur la base de son préfixe, le serveur d’application est responsable de trouver le premier élément de la requête qui déclenchera le traitement de la demande. (-> servlet ou servler filter)

👉🏼 Les composants impliqués dans le traitement sont organisés dans un pipeline. La requête et l’objet de réponse sont passés d’un composant à l’autre.

42
Q

Que signifie IoC et en quoi cela consiste ?

A

👉🏼 Inversion of Controle

👉🏼 Le framwork prend en charge l’exécution principal du programme.

👉🏼 L’IoC est illustré par le principe de Hollywood : « Ne nous appelez pas, c’est nous qui vous appellerons ». Ce n’est plus l’application qui gère les appels au framework, mais ce dernier à l’application.

43
Q

Comment l’IoC est-il appliqué au niveau de la présentation, en utilisant des servlets et des JSP ?

A

On ne créé jamais d’instance de notre
servlets.

On n’appelle jamais doGet ou doPost nous-mêmes. Le serveur d’applications Java EE (aka le framework) le fait.

44
Q

Qu’est-ce qu’un EJB et combien y a-t-il d’EJBs différents ?

A

👉🏼 Enterprise Java Bean

👉🏼 C’est une architecture qui propose un cadre pour créer des composants distribués (4), hébergés sur le serveur d’application :

  • Stateless Session Bean
    utilisé pour implémenter les services métiers, ou chaque requête client est indépendante.
  • Stateful Session Bean
    utilisé pour les services qui ont une notion de conversation (ex : shopping cart).
  • Singleton Session Bean
    utilisé lorsqu’il ne devrait y avoir qu’une instance de service dans l’application.
  • Message Driver Beans
    utilisé avec les messages Java Message Services (JMS).
45
Q

Comment est-ce qu’un client trouve et utilise un EJB ?

(Par “client”, on se réfère à un composant Java qui veut avoir une référence sur l’EJB et invoquer ses méthodes.)

A

👉🏼 Dans la plupart des cas, le client est un servlet ou un EJB.

Deux méthodes :

  • On fait un “explicit lookup” avec JNDI (Java Naming and Directory Interface)
    > coûteux. On préférera l’exécuter une fois et mettre en cache les références aux services.
  • Demander au serveur d’applications
    d’injecter une dépendance au service.
46
Q

Que fait la notation @EJB ?

A

👉🏼 Déclarer une dépendance entre mon servlet et mon service. Le servlet utilise le service.

👉🏼 Donner des instructions au serveur d’application. Lorsque le serveur d’application instancie le servlet, il injecte une valeur dans le
variable collectorService.

47
Q

Why pool objects ?

A
  • Pour augmenter les performances. Certains objets prennent beaucoup de temps à être créé et initialisé (par exemple, objet de connexion DB). Il est mieux vaut réutiliser les objets plutôt que de les jeter et en les recréant.
  • Fixer une limite à la consommation de ressources (CPU, RAM). Nous décidons du nombre de demandes que nous traitons en même temps. Il est préférable de faire attendre les clients un peu que d’épuiser toutes les ressources du serveur.
48
Q

Qu’est-ce que l’Aspect Oriented Programming ? (AOP)

A

👉🏼 permet de traiter séparément les préoccupations transversales (cross-cutting concerns), qui relèvent souvent de la technique, des business logic, qui constituent le cœur d’une application.

Exemple : la journalisation

49
Q

Citer les avantages et inconvénients de l’AOP.

A

AVANTAGES

👉🏼 maintenance aisée
Les modules techniques, sous forme d’aspect, peuvent être maintenus plus facilement du fait de leur détachement de leur utilisation.

👉🏼 **meilleure réutilisation**
Tout module peut être réutilisé sans se préoccuper de son environnement et indépendamment du métier ou du domaine d'application.
Chaque module implémente une fonctionnalité technique précise, on n'a pas besoin de se préoccuper des évolutions futures : de nouvelles fonctionnalités pourront être implémentées dans de nouveaux modules qui interagiront avec le système au travers des aspects.

👉🏼 gain de productivité
Le programmeur ne se préoccupe que de l’aspect de l’application qui le concerne, ce qui simplifie son travail, et permet d’augmenter la parallélisation du développement.

👉🏼 amélioration de la qualité du code
la simplification du code qu’entraîne la programmation par aspect permet de le rendre plus lisible et donc de meilleure qualité.

INCONVÉNIENTS

👉🏼 Le tissage d’aspect qui n’est finalement que de la génération automatique de code inséré à certains points d’exécution du système développé, produit un code qui peut être difficile à analyser (parce que généré automatiquement) lors des phases de mise au point des logiciels (débogage, test).

50
Q

Que signifie les termes ci-dessous ?

Aspect

Greffon

Tissage

Point de coupe

Point de jonction

Considérations entrecroisées

A

Aspect

un module définissant des greffons et leurs points d’activation ;

Greffon (advice)

un programme qui sera activé à un certain point d’exécution du système, précisé par un point de jonction ;

Tissage ou tramagetrad

insertion statique ou dynamique dans le système logiciel de l’appel aux greffons ;

Point de coupe, d’action, de coupure ou de greffe (pointcut)

endroit du logiciel où est inséré un greffon par le tisseur d’aspect ;

Point de jonction ou d’exécutiontrad

endroit spécifique dans le flot d’exécution du système, où il est valide d’insérer un greffon. Pour clarifier le propos, il n’est pas possible, par exemple, d’insérer un greffon au milieu du code d’une fonction. Par contre on pourra le faire avant, autour de, à la place ou après l’appel de la fonction.

Considérations entrecroisées ou préoccupations transversales

mélange, au sein d’un même programme, de sous-programmes distincts couvrant des aspects techniques séparés.

51
Q

Comment implémenter le DAO avec les tecchnologies JAVA EE ?

A

Il y a plusieurs manières pour réaliser cela :

👉🏼 Certains framework (comme Spging) le font dans le tier WEB à l’aide de POJO.

👉🏼 Autrement, on peut le faire avec des EJBS. Dans ce cas, l’architeture ressemblera au schéma en attaché.

52
Q

Est-il possible d’avoir 2 classes EJB qui implémentent la même interface ?

A

Oui, c’est possible.
Si l’on définit deux interfaces DAO (qui sont des EJBs) en tant qu’intefaces locales et qu’on implémente deux stateless session beans (JdbcDAO et JpaDAO), alors on va rencontrer un problème : Le container ne sera pas capable de résoudre la dépendance @EJB, car il y a plus d’une implémentation. Il ne saura pas laquelle choisir.

Il faut simplement préciser dans la notation @EJB :

@EJB(beanName=”SensorJdbcDAO”), comme ça il saura quel sensor choisir.

53
Q

Qu’est-ce que JDBC ?

A

👉🏼 spécification qui définit la manière dont les applications intéragissent avec des bases de données relationnelles de manière standard.

👉🏼 Son but est de créer une couche d’abstraction entre les applications et des SGBDR (MySQL, Oracle, PostgresSQL, DB2, …)

👉🏼 Au travers de cette couche, les applications peuvent envoyer des requêtes SQL.

54
Q

Quelle est la différence entre une API et un SPI ?

A

👉🏼 L’API (Application Programming Interface) est un contrat entre un client et un service.

Il définit ce que le client peut demander au service.

👉🏼 Le SPI (Service Provider API) est un contract entre le service et ses sous-traitants (composants à qui il délègue un peu du travail).

55
Q

Comment peut-on obtenir une référence au JDBC service privder du point de vue :

  • Java SE
  • Java EE
A

Arrivé un moment, l’application voudrait obtenir une référence à un provider spécifique, pour pouvoir invoquer les fonctions JDBC.

👉🏼 JAVA SE

La classe DriverManager adresse ce besoin :

  • Utilisé par les clients qui utilisent l’API.
  • Utilisé par les drivers qui implémente le SPI.

-> fait penser à un registrer qui met les client et les service providers en relation.

En tant que client :

  • Je load explicitement les drivers JDBC.
  • Je dis explicitement avec quelle BD je souhaite intéragir via une URL.

👉🏼 JAVA EE

L’interface DataSource est utilisée pour manager les connexions à la BD :

  • Utilisé par les composants d’application (servlets, EJBs, …) pour obtenir une connexion à la BD.
  • utilisé par les administrateurs système qui définissent le mapping entre le nom d’une source de donnée logique et une base de données concrète.

En tant que développeur :

  • J’utilise seulement un nom logique et je sais qu’il sera lié à un système spécifique lors du runtime.
  • J’obtiens une DataSource soit par un JNDI lookup soit par une injection de dépendance (annotation)
56
Q

À quoi sert JMeter ?

A

👉🏼 Utilisé pour tester les performances sur des ressources statiques ou dynamiques (Java Objects, EJBs, Servlets, Fichiers, …)

👉🏼 Simule une surcharge sur un serveur, réseau ou objet pour tester ses performances.

57
Q

Qu’est-ce qu’un JavaBeans ?

A

👉🏼 Composants logiciel écrits en Java.

👉🏼 On doit respecter les conventions suivantes :

  • Un JavaBean doit avoir un constructeur public sans argument.
  • On doit pouvoir accéder aux propriétés d’un JavaBean via ds getter et setter ayant des noms bien définis.
  • Un JavaBean devrait être sérialisable
58
Q

En quoi les JavaBeans facilite la réflexion dans les frameworks Java ?

A
  • Le framework peut utiliser le constructeur public sans argument pour créer des instances avec Class.newInstance()
  • Le framework peut facilent trouver quelles méthodes il devrait appeler en se basant sur le nom.
    Exemple : lorsqu’une page JSP inclue la string ${sensor.type}, le runtime sait qu’il doit invoquer une méthode nommée “get” + “Type”.
  • L’état d’un JavaBean peut être partagé.
59
Q
A