Déployer un WAR de démarrage de printemps sur un serveur Tomcat

Déployer un WAR de démarrage du printemps sur un serveur Tomcat

1. introduction

Spring Boot est un frameworkconvention over configuration qui nous permet de configurer une configuration prête pour la production d'un projet Spring, etTomcat est l'un des conteneurs de servlets Java les plus populaires.

Par défaut, Spring Boot crée une application Java autonome qui peut s'exécuter en tant qu'application de bureau ou être configurée en tant que service système, mais il existe des environnements dans lesquels nous ne pouvons pas installer un nouveau service ou exécuter l'application manuellement.

Contrairement aux applications autonomes, Tomcat est installé en tant que service capable de gérer plusieurs applications au sein du même processus d’application, évitant ainsi la nécessité d’une configuration spécifique pour chaque application.

Dans ce guide, nous allons créer une application Spring Boot simple et l'adapter pour qu'elle fonctionne dans Tomcat.

2. Configuration d'une application de démarrage de printemps

Nous allons configurer une application Web Spring Boot simple à l'aide de l'un des modèles de démarrage disponibles:


    org.springframework.boot
    spring-boot-starter-parent
    2.0.2.RELEASE
    


    
        org.springframework.boot
        spring-boot-starter-web
    

There’s no need for additional configurations au-delà des@SpringBootApplication standard puisque Spring Boot s'occupe de la configuration par défaut.

Nous ajoutons un simple Endpoint REST pour nous renvoyer du contenu valide:

@RestController
public class TomcatController {

    @GetMapping("/hello")
    public Collection sayHello() {
        return IntStream.range(0, 10)
          .mapToObj(i -> "Hello number " + i)
          .collect(Collectors.toList());
    }
}

Exécutons maintenant l'application avecmvn spring-boot:run et démarrons un navigateur àhttp://localhost:8080/hello pour vérifier les résultats.

3. Création d'un WAR de démarrage du printemps

Les conteneurs de servlets s'attendent à ce que les applications respectent certains contrats à déployer. Pour Tomcat, le contrat est leServlet API 3.0.

Pour que notre application respecte ce contrat, nous devons effectuer quelques petites modifications dans le code source.

Premièrement, nous devons créer une application WAR au lieu d’un JAR. Pour cela, nous changeonspom.xml avec le contenu suivant:

war

Maintenant, modifions le nom de fichier finalWAR pour éviter d'inclure les numéros de version:


    ${artifactId}
    ...

Ensuite, nous allons ajouter la dépendance Tomcat:


   org.springframework.boot
   spring-boot-starter-tomcat
   provided

Enfin, nous initialisons le contexte Servlet requis par Tomcat en implémentant l'interfaceSpringBootServletInitializer:

@SpringBootApplication
public class SpringBootTomcatApplication extends SpringBootServletInitializer {
}

Pour construire notre application WAR déployable par Tomcat, nous exécutonsthe mvn clean package. Après cela, notre fichier WAR est généré àtarget/spring-boot-tomcat.war (en supposant que le MavenartifactId est «spring-boot-tomcat»).

Nous devons considérer que cette nouvelle configuration fait de notre application Spring Boot une application non autonome (si vous souhaitez qu'elle fonctionne à nouveau en mode autonome, supprimez la portéeprovided de la dépendance tomcat).

4. Déploiement du fichier WAR sur Tomcat

Pour que notre fichier WAR soit déployé et exécuté dans Tomcat, nous devons suivre les étapes suivantes:

  1. Download Apache Tomcat et décompressez-le dans un dossiertomcat

  2. Copiez notre fichier WAR detarget/spring-boot-tomcat.war dans le dossiertomcat/webapps/

  3. Depuis un terminal, accédez au dossiertomcat/bin et exécutez

    1. catalina.bat run (sous Windows)

    2. catalina.sh run (sur les systèmes Unix)

  4. Aller àhttp://localhost:8080/spring-boot-tomcat/hello

Cela a été une configuration Tomcat rapide, veuillez consulter le guide surTomcat Installation pour un guide d'installation complet. Il existe également des moyens supplémentaires dedeploying a WAR file to Tomcat.

 5. Conclusion

Dans ce petit guide, nous avons créé une application Spring Boot simple et l'avons transformée en une application WAR valide pouvant être déployée sur un serveur Tomcat.

Comme toujours, le code source complet des exemples est disponibleover on GitHub.