Java

Architecture Microservices 1 : Configuration

Lors du dernier événement interne de Zenika, plusieurs consultants nous ont présenté l’architecture qu’ils avaient mis en place chez leur client. Le client avait des contraintes très particulières : une haute disponibilité et une volumétrie importante réparties sur des applications très variées. Afin de répondre à ces problématiques, les consultants Zenika ont choisi de mettre en place une architecture microservices. Convaincu par leur présentation, je vais mettre en place ce type d’architecture sur un petit projet de démonstration en expliquant les différentes étapes.

Architecture Microservices avec Spring Boot et Spring Cloud

 

spacer

Mockito et les classes primitives

Aujourd’hui, dans le cadre de mon développement, j’ai dû mettre en place des tests unitaires avec Mockito. Ces tests sont assez simples et ne posent pas trop de problèmes. Mais, j’ai découvert un comportement étrange de la part de Mockito concernant les attributs de type Boolean. Dans un objet mocké, un getter dont le retour n’est pas déterminé, retourne false au lieu de null qui serait la valeur par défaut de l’attribut. Je vais tenter de décrire la situation plus précisément par la suite.

Mockito et les classes primaires

spacer

Solution Docker d’Intégration Continue

Dans le cadre de la fin de mes études à l’Exia.CESI, j’ai mené un projet de Recherche et d’Innovation sur l’Intégration Continue avec Docker. Ce projet est composé d’un état de l’art rédigé lors de la quatrième année à l’Exia, et d’une étude menée pendant la cinquième année. Le choix du sujet a été une véritable difficulté pour ce projet. J’ai d’abord souhaité étudier les langages en réalisant des tests de performances afin de rédiger un livre blanc permettant aux entreprises de choisir le langage correspondant à leurs besoins. Avec mes expériences de stages, j’ai vite compris que ceci n’était pas possible dans les petites entreprises. En effet, celles-ci possèdent déjà des processus et des équipes formées sur un langage et elles ne vont pas faire un changement qui engendrerai ce type de coût et irait contre une majorité des développeurs déjà spécialisés. Pour améliorer le fonctionnement de l’entreprise, il peut être préférable d’améliorer son existant. C’est à ce moment que l’intégration continue intervient… La problématique est donc : Pourquoi l’intégration continue n’est elle pas répandue dans l’ensemble des entreprises?

Solution d'Intégration continue avec Docker

spacer

Maven Archetype : There is no POM in this directory

Some times ago, I encountered a question on StackOverflow that caught my attention. This was about an error when Maven was called with the archetype goal. The message was saying that to use this goal the user had to execute the command from a directory where there was a POM file. I wondered how this could be as, the archetype goal is used to generate this file and all the project structure. Let’s see what was the error.

mavenapache

spacer

Changer le port de test avec Arquillian et JBoss Remote

Nous avons déjà vu comment réaliser des tests avec des EJBs de manière très simplifié grâce à Arquillian. Cependant, cela peut devenir vite compliqué lorsque les environnements des tests sont très variables. J’ai rencontré ce problème lors d’un projet sur lequel nous utilisions Jenkins et le conteneur JBoss pour réaliser nos tests. Arquillian va déployer son archive sur le port par défault de JBoss or celui-ci avait été changé sur notre serveur. Voyons comment faire pour rediriger Arquillian et lui faire tester les archives sur d’autres ports.

JbossArquillian

spacer

Tester ses EJBs avec Arquillian

La rédaction de tests est très importante lors des phases de développement d’une application. Cependant lors de développement d’application Java EE comme tester les classes métier utilisant des EJBs? Pour être testés, ils doivent être déployés au sein d’un conteneur d’EJBs qui va gérer leur instanciation et leur injection. Arquillian est un outil qui va permettre de gérer le déploiement des archives à tester avant d’exécuter les tests. Voyons comment.

arquillian_logo_450px

spacer

Approfondissement Technique : Intégration continue

Au cours de ma cinquième année à l’Exia.CESI, j’ai réalisé un projet d’approfondissement technique au sein d’un groupe de 4 personnes. Chaque membre du projet devait choisir un sujet qu’il connaissait et souhaitait approfondir. Chacun a donc choisi un sujet différent en fonction de ses affinités et de son choix d’orientation professionnelle. Nous nous sommes alors réunis pour définir un projet qui nous permettrait de mettre en pratique nos sujets. Le projet Skilldr est ainsi né. Je souhaite maintenant vous présenter le contenu de mon approfondissement sur l’intégration continue en Java.

ProcessIntegrationContinue

spacer

Provider pour Exception : ExceptionMapper

Dans le cadre d’un projet scolaire, nous avons mis en place une application Java EE contenant des EJBs et des WebServices REST. Dans nos EJBs, nous avons créé une gestion d’erreurs par exceptions pour avoir des retours notamment en ce qui concerne la base de données. Afin d’obtenir un message claire et orienté utilisateur, nous avons paramétré une classe Provider héritant de ExceptionMapper gérant les Exceptions de manière personnalisée avant de les envoyer aux clients légers. Ainsi, l’utilisateur ne sera pas bloqué sans information, et celles qui lui sont envoyées sont formatées pour avoir un affichage propre.javaProviderException

spacer

Conférence: Apache TomEE

En Java EE, il est commun d’utiliser des serveurs d’applications qui vont réaliser le déploiement de nos applications War et servir de conteneurs à tous les traitements réalisés. Le problèmes posé par ces serveurs est qu’ils sont généralement assez volumineux et qu’ils consomment beaucoup de ressources serveurs. Au Java User Group de Lyon, Jean-Louis Monteiro est venu nous présenter le serveur d’applications Apache TomEE qui allie les capacités du Java EE et la légéreté de Tomcat, le conteneur de servlets de la fondation Apache.apachetomee

spacer

Services RestFul avec RestEasy

Avec le développement des Single Page Application, les développeurs Java EE ont de plus en plus besoin faire des Web services respectant les normes Rest. La spécification JAX-RS définit une norme d’implémentation de ces services en Java. RestEasy est une de ces implémentations tout comme CXF et Jersey. Je vais présenter ici une implémentation simple de ce type de service.

javaresteasy

spacer