Créer, configurer et exécuter par programme un serveur Tomcat

Créez, configurez et exécutez un serveur Tomcat par programme

1. Vue d'ensemble

Dans cet article rapide, nous allons créer, configurer et exécuter par programme unTomcat server.

2. Installer

Avant de commencer, nous devons configurer notre projet Maven en ajoutant les dépendances ci-dessous à nospom.xml:


    
        org.apache.tomcat
        tomcat-catalina
        ${tomcat.version}
    
    
        org.apache.httpcomponents
        httpclient
        ${apache.httpclient}
    
    
        junit
        junit
        ${junit.version}
        test
    

Voici unlink to Maven Central avec les dernières versions des dépendances utilisées ici dans le projet.

3. Initialisation et configuration de Tomcat

Parlons d'abord des étapes requises pour l'initialisation et la configuration d'un serveur Tomcat.

3.1. Créer Tomcat

Nous pouvons créer une instance en faisant simplement:

Tomcat tomcat = new Tomcat();

Maintenant que nous avons le serveur, configurons-le.

3.2. Configurer Tomcat

Nous allons nous concentrer sur la façon de faire fonctionner le serveur, en ajoutant un servlet et un filtre.

Tout d'abord, nous devons configurer un port, un nom d'hôte et unappBase (généralement des applications Web). Pour notre objectif, nous utiliserons le répertoire actuel:

tomcat.setPort(8080);
tomcat.setHostname("localhost");
String appBase = ".";
tomcat.getHost().setAppBase(appBase);

Ensuite, nous devons définir undocBase (le répertoire racine de contexte pour cette application Web):

File docBase = new File(System.getProperty("java.io.tmpdir"));
Context context = tomcat.addContext("", docBase.getAbsolutePath());

À ce stade, notre Tomcat fonctionne presque.

Ensuite, nous allons ajouter un servlet et un filtre et démarrer le serveur pour voir s'il fonctionne.

3.3. Ajout d'un servlet au contexte Tomcat

Ensuite, nous allons ajouter un texte simple auxHttpServletResponse.. C'est le texte qui va s'afficher lorsque nous accédons au mappage d'URL pour ce servlet.

Définissons d'abord notre servlet:

public class MyServlet extends HttpServlet {

    @Override
    protected void doGet(
      HttpServletRequest req,
      HttpServletResponse resp) throws IOException {

        resp.setStatus(HttpServletResponse.SC_OK);
        resp.getWriter().write("test");
        resp.getWriter().flush();
        resp.getWriter().close();
    }
}

Maintenant, nous ajoutons cette servlet au serveur Tomcat:

Class servletClass = MyServlet.class;
Tomcat.addServlet(
  context, servletClass.getSimpleName(), servletClass.getName());
context.addServletMappingDecoded(
  "/my-servlet/*", servletClass.getSimpleName());

3.4. Ajout d'un filtre au contexte Tomcat

Ensuite, nous définissons un filtre et l’ajoutons à Tomcat:

public class MyFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) {
        // ...
    }

    @Override
    public void doFilter(
      ServletRequest request,
      ServletResponse response,
      FilterChain chain)
      throws IOException, ServletException {

        HttpServletResponse httpResponse = (HttpServletResponse) response;
        httpResponse.addHeader("myHeader", "myHeaderValue");
        chain.doFilter(request, httpResponse);
    }

    @Override
    public void destroy() {
        // ...
    }
}

Ajouter le filtre au contexte nécessite un peu plus de travail:

Class filterClass = MyFilter.class;
FilterDef myFilterDef = new FilterDef();
myFilterDef.setFilterClass(filterClass.getName());
myFilterDef.setFilterName(filterClass.getSimpleName());
context.addFilterDef(myFilterDef);

FilterMap myFilterMap = new FilterMap();
myFilterMap.setFilterName(filterClass.getSimpleName());
myFilterMap.addURLPattern("/my-servlet/*");
context.addFilterMap(myFilterMap);

À ce stade, nous devrions avoir une servlet et un filtre ajoutés au Tomcat.

Tout ce qui reste à faire est de le démarrer, d’obtenir la page «test» et de consulter les journaux pour voir si le filtre fonctionne.

4. Démarrer Tomcat

C'est une opération assez simple et après cela, nous devrions voir Tomcat s'exécuter:

tomcat.start();
tomcat.getServer().await();

Une fois qu'il a démarré, nous pouvons aller àhttp://localhost:8080/my-servlet et voir la page de test:

image

Et si nous regardons les journaux, nous verrons quelque chose comme ceci:

image

Ces journaux montrent que Tomcat a commencé à écouter sur le port 8080 et que notre filtre fonctionne correctement.

5. Conclusion

Dans ce didacticiel, nous avons décrit la configuration de base d’un serveur Tomcat.

Nous avons examiné comment créer, configurer et exécuter le serveur, mais également comment ajouter un servlet et un filtre par programme au contexte Tomcat.

Comme toujours, l'implémentation complète peut être trouvéeover on Github.