Questions UML

Lequel n'est pas un diagramme UML ?
  1. Diagramme des paquetages
  2. Diagramme de composants
  3. Diagramme de structure composite
  4. Diagramme d'instances.

Questions Java core

Qu’est-ce que JMX ?
  1. Java Messaging eXtended : C’est une API qui permet d’envoyer des messages via SMTP.
  2. C’est une API pour permettre un dialogue standard entre des applications ou des composants via des brokers de messages.
  3. JMX (Java Management Extensions) est une spécification qui définit une architecture, une API et des services pour permettre de surveiller et de gérer des ressources en Java.
  4. C’est une API pour permettre un dialogue asynchrone entre des applications ou des composants via des brokers de messages.

Questions sur les exceptions Java

Lorsqu’une exception est levée, que se passe-t-il ?
  1. La Java machine stoppe l'exécution normale du programme à la recherche d'un gestionnaire d'exception susceptible d'intercepter et traiter cette exception. Cette recherche s'effectue  à partir du bloc englobant et se poursuit sur les blocs plus englobants si aucun gestionnaire de cette exception n'a été trouvé.
  2. La JVM termine l’exécution du programme et rend la main au système.
  3. Si le code qui a causé l’exception n’est pas dans un bloc try/catch l’exécution du programme s’arrête.
  4. Si une exception hérite de la class java.lang.Error, le programme s’arrête, même si l’exception est gérée.

Questions JPA, Hibernate

Au sujet save() et saveOrUpdate(), quelle est la bonne affirmation ?
  1. Avec save() on n’utilise pas de transaction.
  2. Save() est une méthode de l’objet Session, alors que saveOrUpdate() est une méthode de l’object Transaction.
  3. Save() insert un enregistrement en table. SaveOrUpdate met à jours un enregistrement. S’il ne le trouve pas, il l’insert.
  4. SaveOrUpdate() et Save() ne nécessite pas d’être dans un bloc de traitement d'erreur.

Présentation de Mockito

A quoi sert un mock ?


  • Comment tester une méthode qui ne retourne rien ?
  • Comment tester une méthode qui interagit avec un autre objet ?


Avec les tests unitaires, nous voulons tester une méthode, mais pas ses dépendances.


Il faut donc faire croire à l’objet que l’on veut tester qu’il va utiliser les objet qu’il doit normalement instancier.

Mockito va donc nous aider à créer des “bouchons” (mock objects) qui vont simuler les objets réels

Présentation de Spring Roo


Spring Roo est un outil de Développement Rapide d’Application (RAD). Grâce à quelques instructions en ligne de commande on peut créer une web application Spring, ajouter et configurer des composants à toutes les couches de l’architecture de l’application.


  • Pour la couche de persistance, Roo nous laisse choisir la base de données, l’ORM à utiliser (Hibernate par exemple).
  • Il crée et gère les objets entités grâce à JPA.
  • Pour la couche de présentation, on choisit entre une interface web basée sur Spring MVC, GWT ou JSF.
  • Roo gère automatiquement  le logging et les tests grâce à JUnit et Selenium.

Introduction à ElasticSearch

ElasticSearch est un moteur de recherche open source développé en java. Il est basé sur la librairie Apache Lucene. Cette dernière étant assez difficile à mettre en oeuvre, ElasticSearch facilite l'utilisation de Lucene en intégrant la librairie dans une application Java modulaire, facilement configurable et capable de fonctionner en cluster.
Il suffit de quelques minutes à peine pour disposer d'un moteur de recherche clusterisé, automatiquement sauvegardé et répliqué, interrogeable via une API REST et proposant toutes les fonctionnalités d'un moteur de recherche dernière génération.

La configuration se fait très simplement, et permet de répartir automatiquement le volume des données indexées et la charge d'utilisation sur l'ensemble des machines appartenant au cluster (ici, un cluster n'est pas un ensemble de serveur, mais un ensemble de nœuds). Pour absorber plus de données ou plus de charge, il suffira d'ajouter de nouvelles machines au cluster.

Les principales fonctionnalités d'ElasticSearch
Nous avons droit à toutes les fonctionnalités d'un moteur de recherche nouvelle génération :
- les recherches par mots clés façon Google
- les recherches par combinaison de critères et de filtres
- le tri et la pagination des résultats
- la gestion des synonymes
- l'extraction de texte à partir de documents binaires (photo, pdf...)
- l'analyse et la navigation par facettes (c'est-à-dire permettre d’effectuer une recherche en fonction de multiples critères)

Système de plugins
ElasticSearch permet aussi d'ajouter facilement de nouvelles fonctionnalités au moteur de recherche grâce à des plugins.
On peut ajouter par exemple:
- des analyseurs syntaxiques
- des interfaces d'administrations
- des plugins qui permettent d'indexer différentes sources de données (bases de données relationnelles, NoSQL, annuaire LDAP, système de fichiers, flux RSS etc).

API REST
ElasticSearch dispose d'une API REST très complète permettant d'utiliser le moteur de recherche avec de simples requêtes HTTP/JSON. REST qui fournit une interface à toutes les manipulations que l’on peut faire sur Elasticsearch.

Cluster et node
Un node est une instance d'un serveur ElasticSearch. Lorsqu'on a un gros volume de données à gérer, ou penser à la tolérance de pannes, on utilise une configuration multi-nodes.
Un cluster est un ensemble de plusieurs nodes qui travaillent ensemble. Cette solution permet de gérer des grosse charges, d'avoir un travail ininterrompu dans le cas où un noeud devient inaccessible.