Cet article présente rapidement la création d’une application REST avec Spring Boot puis son déploiement sous Oracle WebLogic Server 14c.
Création de l’application Spring Boot
Spring propose un site web qui permet de générer simplement une application (spring initializr) en permettant de régler quelques paramètres :
Sélectionner/valoriser les paramètres en fonction de vos désirs :
- Moteur de build : Maven / Gradle (j’ai choisi Maven)
- Version de Spring Boot
- Métadata du projet (package java, projet, etc…)
- Packaging : Sélectionner « war » afin de pouvoir déployer l’application dans WebLogic Server
- Version de java
- Les dépendances : Au minimum sélectionner Spring Web pour pouvoir créer une application web avec le support de REST.
Une fois les paramètres fixés cliquer sur le bouton « GENERATE ». L’application est créée et le site vous propose de la télécharger localement sur votre machine.
Sauvegarder et décompresser le fichier .zip à l’emplacement de votre choix.
Développement
Les développements sont effectués sous Eclipse mais n’importe quel IDE java fera l’affaire pour peux qu’il supporte ANT et MAVEN (ou Gradle)
Import du projet Maven
Option File / Import
Sélectionner « Existing Maven Projects »
Indiquer l’emplacement du projet (décompressé à l’étape précédente)
Une fois l’import terminé le contenu du fichier s’affiche dans l’explorateur de projet :
Le contenu du fichier pom.xml généré d’après les paramètres sélectionnés :
[pastacode lang= »markup » manual= »%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Cproject%20xmlns%3D%22http%3A%2F%2Fmaven.apache.org%2FPOM%2F4.0.0%22%20xmlns%3Axsi%3D%22http%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema-instance%22%0A%09xsi%3AschemaLocation%3D%22http%3A%2F%2Fmaven.apache.org%2FPOM%2F4.0.0%20https%3A%2F%2Fmaven.apache.org%2Fxsd%2Fmaven-4.0.0.xsd%22%3E%0A%09%3CmodelVersion%3E4.0.0%3C%2FmodelVersion%3E%0A%09%3Cparent%3E%0A%09%09%3CgroupId%3Eorg.springframework.boot%3C%2FgroupId%3E%0A%09%09%3CartifactId%3Espring-boot-starter-parent%3C%2FartifactId%3E%0A%09%09%3Cversion%3E2.7.4%3C%2Fversion%3E%0A%09%09%3CrelativePath%2F%3E%20%3C!–%20lookup%20parent%20from%20repository%20–%3E%0A%09%3C%2Fparent%3E%0A%09%3CgroupId%3Efr.corsaireconsulting%3C%2FgroupId%3E%0A%09%3CartifactId%3Edemowls%3C%2FartifactId%3E%0A%09%3Cversion%3E0.0.1-SNAPSHOT%3C%2Fversion%3E%0A%09%3Cpackaging%3Ewar%3C%2Fpackaging%3E%0A%09%3Cname%3Edemowls%3C%2Fname%3E%0A%09%3Cdescription%3EDemo%20project%20for%20Spring%20Boot%20and%20Oracle%20WebLogic%20Server%3C%2Fdescription%3E%0A%09%3Cproperties%3E%0A%09%09%3Cjava.version%3E11%3C%2Fjava.version%3E%0A%09%3C%2Fproperties%3E%0A%09%3Cdependencies%3E%0A%09%09%3Cdependency%3E%0A%09%09%09%3CgroupId%3Eorg.springframework.boot%3C%2FgroupId%3E%0A%09%09%09%3CartifactId%3Espring-boot-starter-web%3C%2FartifactId%3E%0A%09%09%3C%2Fdependency%3E%0A%0A%09%09%3Cdependency%3E%0A%09%09%09%3CgroupId%3Eorg.springframework.boot%3C%2FgroupId%3E%0A%09%09%09%3CartifactId%3Espring-boot-starter-tomcat%3C%2FartifactId%3E%0A%09%09%09%3Cscope%3Eprovided%3C%2Fscope%3E%0A%09%09%3C%2Fdependency%3E%0A%09%09%3Cdependency%3E%0A%09%09%09%3CgroupId%3Eorg.springframework.boot%3C%2FgroupId%3E%0A%09%09%09%3CartifactId%3Espring-boot-starter-test%3C%2FartifactId%3E%0A%09%09%09%3Cscope%3Etest%3C%2Fscope%3E%0A%09%09%3C%2Fdependency%3E%0A%09%3C%2Fdependencies%3E%0A%0A%09%3Cbuild%3E%0A%09%09%3Cplugins%3E%0A%09%09%09%3Cplugin%3E%0A%09%09%09%09%3CgroupId%3Eorg.springframework.boot%3C%2FgroupId%3E%0A%09%09%09%09%3CartifactId%3Espring-boot-maven-plugin%3C%2FartifactId%3E%0A%09%09%09%3C%2Fplugin%3E%0A%09%09%3C%2Fplugins%3E%0A%09%3C%2Fbuild%3E%0A%0A%3C%2Fproject%3E%0A » message= »pom.xml » highlight= »14,29″ provider= »manual »/]
2 remarques concernant le contenu du pom.xml :
- La balise « packaging » a la valeur « war »
- Le « starter » Tomcat est déclaré « provided »
Ces 2 paramètres permettent le déploiement de l’application dans un serveur d’application J2EE.
Développement du contrôleur REST
Développons un tout petit contrôleur REST pour pouvoir interagir avec l’application.
Création d’un package « controllers » pour y placer la classe du contrôleur.
Créer une classe java (DemoController) dans ce nouveau package :
Ajouter l’annotation @RestController (et l’import) à la définition de la classe pour en faire un contrôleur REST :
Déclarer l’accès au contrôleur avec l’annotation @RequestMapping
Ajouter une méthode REST pour pouvoir interagir avec l’application via le contrôleur : sayHello()
Dans cet exemple l’URL /api/demo/hello sera accessible vie une simple méthode GET grâce à l’annotation @GetMapping
La fonction se contente de renvoyer la chaîne de caractères « hello ».
Construction de l’application (war)
La génération du war qui sera déployé dans le serveur se fait via la commande « maven package »
Sous Eclipse le build peut être exécuté via l’option « Run as / Maven Build » depuis le menu contextuel accessible sur le fichier pom.xml
Indiquer la valeur « package » dans le champ « Goals » puis cliquer sur le bouton « Run » pour lancer le pacjaging.
Le war généré se trouve dans le répertoire « target »
Déploiement dans le serveur d’applications WebLogic Server 14c
Créer un domaine WebLogic Server 14c à l’emplacement de votre choix. Cette partie n’est pas détaillée car elle n’est pas l’objectif de cet article.
Lancer ensuite le serveur d’administration.
Lancer et se connecter à la console d’administration WebLogic Server (http://localhost:7001/console par exemple)
Cliquer sur l’options « Déploiements »
Cliquer sur le bouton « Installer » pour déployer une nouvelle application
Sélectionner le war à partir de son emplacement sur le disque dur
Installer le war en tant qu’application
Terminer le déploiement.
Tester l’accès à l’application et au contrôleur via l’url http://localhost:7001/demowls-0.0.1-SNAPSHOT/api/demo/hello avec curl par exemple :
All done !