Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
elearning:workbooks:tomcat10:tc01 [2023/10/07 13:46] adminelearning:workbooks:tomcat10:tc01 [2023/10/09 09:18] (Version actuelle) admin
Ligne 29: Ligne 29:
       * Les Sessions HTTP       * Les Sessions HTTP
  
-=====Présentation de Tomcat 8=====+=====Présentation de Tomcat=====
  
 ====Historique et différentes versions==== ====Historique et différentes versions====
Ligne 60: Ligne 60:
 |  8.x  |  3.1  |  2.3  |  Java EE 7 et +  | |  8.x  |  3.1  |  2.3  |  Java EE 7 et +  |
 |  9.x  |  4.0  |  2.3  |  Java EE 8 et +  | |  9.x  |  4.0  |  2.3  |  Java EE 8 et +  |
-|  10.0.11   5.0  |  3.0  |  Java EE 8 et +  |+|  10  |  5.0  |  3.0  |  Java EE 8 et +  | 
 +|  10.1  |  6.0  |  3.1  |  Jakarta EE  | 
 + 
 +Tomcat 9 implémentait un sous-jeux de la spécification Java EE 8, à savoir : 
 + 
 +  * Servlets 
 +  * Java Server Pages 
 +  * Java Unified Expression Language 
 +  * Java Websocket 
 +  * Java Debugging Support 
 +  * Java Authentication Service Provider 
 +  * Common Annotations
  
 =====Rappel sur les applications Web en Java===== =====Rappel sur les applications Web en Java=====
Ligne 72: Ligne 83:
   * des applets (applications embarquées dans des pages HTML).   * des applets (applications embarquées dans des pages HTML).
  
-Lors du développement d'une application, la compilation du code source Java donne un format de fichier spécifique appelé **byte-code**. Ce format de fichier est interprété par une **machine virtuelle java**.+Lors du développement d'une application, la compilation du code source Java donnait un format de fichier spécifique appelé **byte-code**. Ce format de fichier est interprété par une **machine virtuelle java**.
  
-Java se décompose en plusieurs plate-formes :+Java se décomposait en plusieurs plate-formes :
  
   * JSE (//Java Standard Edition//),   * JSE (//Java Standard Edition//),
Ligne 89: Ligne 100:
       * une plate-forme de développement d'applications mobiles utilisées dans des téléphones mobiles, pocket pc etc.       * une plate-forme de développement d'applications mobiles utilisées dans des téléphones mobiles, pocket pc etc.
  
-En **1998**, la version 1.2 de ces plate-formes, connue sous le nom de **Java 2** a donné naissance à l'utilisation des termes **J2SE**, **J2EE** et **J2ME**.+En **1998**, la version 1.2 de ces plate-formes, connue sous le nom de **Java 2** a donné naissance à l'utilisation des termes **J2SE**, **J2EE** et **J2ME**. Ensuite :
  
-En **2004**, la version 1.5 a été publiée, donnant lieu à **Java 5**.+^  Version  ^  Date de Sortie 
 +|  J2EE 1.2  |  12/1999 
 +|  J2EE 1.3  |  09/2001 
 +|  J2EE 1.4  |  11/2003 
 +|  Java EE   05/2006 
 +|  Java EE 6  |  12/2009 
 +|  Java EE 7  |  04/2013 
 +|  Java EE 8  |  08/2017  |
  
-En **2006**, la version 1.6 ou **Java 6** a été publiée et le chiffre 2 retiré de J2SE et J2EE. +Le JRE de la plate-forme JSE était constitué des éléments suivants :
- +
-La version **actuelle** de la plate-forme est la version **8**. +
- +
-Le JRE de la plate-forme JSE est constitué des éléments suivants :+
  
   * **JVM** (//Java Virtual Machine//),   * **JVM** (//Java Virtual Machine//),
Ligne 105: Ligne 119:
     * Des composants logiciels prêt à l'emploi,     * Des composants logiciels prêt à l'emploi,
  
-Outre les deux éléments précédents, le JDK de la plate-forme JSE contient des **outils de développement** suivants :+Outre les deux éléments précédents, le JDK de la plate-forme JSE contenait des **outils de développement** suivants :
  
   * **javac**,   * **javac**,
Ligne 113: Ligne 127:
   * **javadoc**,   * **javadoc**,
     * un générateur de documentation.     * un générateur de documentation.
 +
 +=====Jakarta EE=====
 +
 +En septembre 2017, Oracle a décidé de céder la partie EE de Java à la Fondation Eclipse. Par contre Oracle n'a pas été d'accord pour céder la marque Java elle-même.
 +
 +En février 2018, la Fondation, plongeant dans le passé des projets de la Fondation Apache, a décidé de renommer Java EE en **[[https://jakarta.ee|Jakarta EE]]**, un nom qui n'est pas déposé.
 +
 +Jakarta EE spécifie, entre autre, les :
 +
 +  * Jakarta Server Pages ( JSP )
 +  * Jakarta Standard Tag Library ( JSTL )
 +  * Jakarta Enterpsire Beans (EJB )
 +  * Jakarta RESTful Web Services ( JAX-RS )
 +  * Jakarta Bean Validation
 +  * Jakarta Contexts and Dependany Injection ( CDI )
 +  * Jakarta Persistance ( JPA )
 +
 +Jakarta est opensource et est indépendant d'un ISV (Independant Software Vendor).
 +
 +Jakarta EE a été accepté par le marché parce que c''était stable, portable et bénéficiait d'une compatibilité ascendante
 +
 +La première version de Jakarta EE était la 8, sortie en octobre 2019 et entièrement compatible avec Java EE 8, suivie par :
 +
 +^  Version Jakarta  ^  Date de Sortie  ^  Commentaires ^
 +|  Jakarta EE 9  |  08/12/2020  |  Compatible JDK 11. Compatible avec Java EE 8. Pas de nouvelles fonctionalités.  |
 +|  Jakarta EE 9.1  |  25/05/2021  |  L'espace de noms javax devient jakarta pour des raisons légales. Compatible avec Java EE 8. Pas de nouvelles fonctionalités majeures. La documentation des spécifications a été mise à jour. |
 +|  Jakarta EE 10  |  13/09/2022  |    |
  
 =====Contenu statique, dynamique, Servlets, JSPs et Composants EJB===== =====Contenu statique, dynamique, Servlets, JSPs et Composants EJB=====
Ligne 275: Ligne 316:
 Ces modules possèdent un **descripteur de déploiement** sous la forme d'un fichier appelé **ra.xml** et sont assemblés dans un fichier compressé au format **zip** ayant une extension **.rar**.  Ces modules possèdent un **descripteur de déploiement** sous la forme d'un fichier appelé **ra.xml** et sont assemblés dans un fichier compressé au format **zip** ayant une extension **.rar**. 
  
-=====Positionnement d'Apache Tomcat dans la norme Java EE===== +=====Positionnement d'Apache Tomcat dans la norme EE===== 
  
 Le serveur Tomcat ne dispose pas de l'environnement spécifique nécessaire pour héberger les EJB. Par conséquent il n'est pas possible d'utiliser les EJB avec Tomcat. En effet, des modules cités précédemment, seuls les modules web peuvent être exploités par un serveur Tomcat. Le serveur Tomcat ne dispose pas de l'environnement spécifique nécessaire pour héberger les EJB. Par conséquent il n'est pas possible d'utiliser les EJB avec Tomcat. En effet, des modules cités précédemment, seuls les modules web peuvent être exploités par un serveur Tomcat.
Ligne 432: Ligne 473:
     <filter-name>CSRF</filter-name>     <filter-name>CSRF</filter-name>
     <servlet-name>HTMLManager</servlet-name>     <servlet-name>HTMLManager</servlet-name>
 +  </filter-mapping>
 +
 +  <!-- Define a Security Constraint on this Application -->
 +  <!-- NOTE:  None of these roles are present in the default users file -->
 +  <security-constraint>
 +    <web-resource-collection>
 +      <web-resource-name>HTML Manager interface (for humans)</web-resource-name>
 +      <url-pattern>/html/*</url-pattern>
 +    </web-resource-collection>
 +    <auth-constraint>
 +       <role-name>manager-gui</role-name>
 +    </auth-constraint>
 +  </security-constraint>
 +  <security-constraint>
 +    <web-resource-collection>
 +      <web-resource-name>Text Manager interface (for scripts)</web-resource-name>
 +      <url-pattern>/text/*</url-pattern>
 +    </web-resource-collection>
 +    <auth-constraint>
 +       <role-name>manager-script</role-name>
 +    </auth-constraint>
 +  </security-constraint>
 +  <security-constraint>
 +    <web-resource-collection>
 +      <web-resource-name>JMX Proxy interface</web-resource-name>
 +      <url-pattern>/jmxproxy/*</url-pattern>
 +    </web-resource-collection>
 +    <auth-constraint>
 +       <role-name>manager-jmx</role-name>
 +    </auth-constraint>
 +  </security-constraint>
 +  <security-constraint>
 +    <web-resource-collection>
 +      <web-resource-name>Status interface</web-resource-name>
 +      <url-pattern>/status/*</url-pattern>
 +    </web-resource-collection>
 +    <auth-constraint>
 +       <role-name>manager-gui</role-name>
 +       <role-name>manager-script</role-name>
 +       <role-name>manager-jmx</role-name>
 +       <role-name>manager-status</role-name>
 +    </auth-constraint>
 +  </security-constraint>
 +
 +  <!-- Define the Login Configuration for this Application -->
 +  <login-config>
 +    <auth-method>BASIC</auth-method>
 +    <realm-name>Tomcat Manager Application</realm-name>
 +  </login-config>
 +
 +  <!-- Security roles referenced by this web application -->
 +  <security-role>
 +    <description>
 +      The role that is required to access the HTML Manager pages
 +    </description>
 +    <role-name>manager-gui</role-name>
 +  </security-role>
 +  <security-role>
 +    <description>
 +      The role that is required to access the text Manager pages
 +    </description>
 +    <role-name>manager-script</role-name>
 +  </security-role>
 +  <security-role>
 +    <description>
 +      The role that is required to access the HTML JMX Proxy
 +    </description>
 +    <role-name>manager-jmx</role-name>
 +  </security-role>
 +  <security-role>
 +    <description>
 +      The role that is required to access to the Manager Status pages
 +    </description>
 +    <role-name>manager-status</role-name>
 +  </security-role>
 +
 +  <error-page>
 +    <error-code>401</error-code>
 +    <location>/WEB-INF/jsp/401.jsp</location>
 +  </error-page>
 +  <error-page>
 +    <error-code>403</error-code>
 +    <location>/WEB-INF/jsp/403.jsp</location>
 +  </error-page>
 +  <error-page>
 +    <error-code>404</error-code>
 +    <location>/WEB-INF/jsp/404.jsp</location>
 +  </error-page>
 +
 +</web-app>
 +</file>
 +
 +<file>
 +<?xml version="1.0" encoding="UTF-8"?>
 +<!--
 + Licensed to the Apache Software Foundation (ASF) under one or more
 +  contributor license agreements.  See the NOTICE file distributed with
 +  this work for additional information regarding copyright ownership.
 +  The ASF licenses this file to You under the Apache License, Version 2.0
 +  (the "License"); you may not use this file except in compliance with
 +  the License.  You may obtain a copy of the License at
 +
 +      http://www.apache.org/licenses/LICENSE-2.0
 +
 +  Unless required by applicable law or agreed to in writing, software
 +  distributed under the License is distributed on an "AS IS" BASIS,
 +  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 +  See the License for the specific language governing permissions and
 +  limitations under the License.
 +-->
 +<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
 +  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 +  xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
 +                      https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
 +  version="5.0"
 +  metadata-complete="true">
 +
 +  <display-name>Tomcat Manager Application</display-name>
 +  <description>
 +    A scriptable management web application for the Tomcat Web Server;
 +    Manager lets you view, load/unload/etc particular web applications.
 +  </description>
 +
 +  <request-character-encoding>UTF-8</request-character-encoding>
 +
 +  <servlet>
 +    <servlet-name>Manager</servlet-name>
 +    <servlet-class>org.apache.catalina.manager.ManagerServlet</servlet-class>
 +    <init-param>
 +      <param-name>debug</param-name>
 +      <param-value>2</param-value>
 +    </init-param>
 +  </servlet>
 +  <servlet>
 +    <servlet-name>HTMLManager</servlet-name>
 +    <servlet-class>org.apache.catalina.manager.HTMLManagerServlet</servlet-class>
 +    <init-param>
 +      <param-name>debug</param-name>
 +      <param-value>2</param-value>
 +    </init-param>
 +    <!-- Uncomment this to show proxy sessions from the Backup manager or a
 +         StoreManager in the sessions list for an application
 +    <init-param>
 +      <param-name>showProxySessions</param-name>
 +      <param-value>true</param-value>
 +    </init-param>
 +    -->
 +    <multipart-config>
 +      <!-- 50MB max -->
 +      <max-file-size>52428800</max-file-size>
 +      <max-request-size>52428800</max-request-size>
 +      <file-size-threshold>0</file-size-threshold>
 +    </multipart-config>
 +  </servlet>
 +  <servlet>
 +    <servlet-name>Status</servlet-name>
 +    <servlet-class>org.apache.catalina.manager.StatusManagerServlet</servlet-class>
 +    <init-param>
 +      <param-name>debug</param-name>
 +      <param-value>0</param-value>
 +    </init-param>
 +  </servlet>
 +
 +  <servlet>
 +    <servlet-name>JMXProxy</servlet-name>
 +    <servlet-class>org.apache.catalina.manager.JMXProxyServlet</servlet-class>
 +  </servlet>
 +
 +  <!-- Define the Manager Servlet Mapping -->
 +  <servlet-mapping>
 +    <servlet-name>Manager</servlet-name>
 +      <url-pattern>/text/*</url-pattern>
 +  </servlet-mapping>
 +  <servlet-mapping>
 +    <servlet-name>Status</servlet-name>
 +    <url-pattern>/status/*</url-pattern>
 +  </servlet-mapping>
 +  <servlet-mapping>
 +    <servlet-name>JMXProxy</servlet-name>
 +      <url-pattern>/jmxproxy/*</url-pattern>
 +  </servlet-mapping>
 +  <servlet-mapping>
 +    <servlet-name>HTMLManager</servlet-name>
 +    <url-pattern>/html/*</url-pattern>
 +  </servlet-mapping>
 +
 +  <filter>
 +    <filter-name>CSRF</filter-name>
 +    <filter-class>org.apache.catalina.filters.CsrfPreventionFilter</filter-class>
 +    <init-param>
 +      <param-name>entryPoints</param-name>
 +      <param-value>/html,/html/,/html/list,/index.jsp</param-value>
 +    </init-param>
 +  </filter>
 +
 +  <!-- Configured to set X-FRAME-OPTIONS. Disable HSTS in case it interferes -->
 +  <!-- with an existing setting. Keep X-Content-Type-Options and             -->
 +  <!-- X-XSS-Protection as they are page specific.                           -->
 +  <filter>
 +    <filter-name>HTTP header security filter</filter-name>
 +    <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class>
 +    <init-param>
 +      <param-name>hstsEnabled</param-name>
 +      <param-value>false</param-value>
 +    </init-param>
 +  </filter>
 +
 +  <filter-mapping>
 +    <filter-name>CSRF</filter-name>
 +    <servlet-name>HTMLManager</servlet-name>
 +  </filter-mapping>
 +
 +  <filter-mapping>
 +    <filter-name>HTTP header security filter</filter-name>
 +    <url-pattern>/*</url-pattern>
   </filter-mapping>   </filter-mapping>
  
Ligne 527: Ligne 783:
  
 <file> <file>
-<?xml version="1.0" encoding="ISO-8859-1"?>+<?xml version="1.0" encoding="UTF-8"?>
 </file> </file>
  
Ligne 533: Ligne 789:
  
 <file> <file>
-<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"+<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee +  xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee 
-                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" +                      https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd" 
-  version="3.1"+  version="5.0"
   metadata-complete="true">   metadata-complete="true">
 ... ...
Ligne 558: Ligne 814:
 </file> </file>
  
-L'élément **<filter>** permet de spécifier le code de caractères à utiliser pour l'application :+L'élément **<request-character-encoding>** permet de spécifier le code de caractères à utiliser pour l'application :
  
 <file> <file>
-  <filter> +  <request-character-encoding>UTF-8</request-character-encoding>
-    <filter-name>SetCharacterEncoding</filter-name> +
-    <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class> +
-    <init-param> +
-      <param-name>encoding</param-name> +
-      <param-value>UTF-8</param-value> +
-    </init-param> +
-  </filter> +
-</file> +
- +
-Ensuite l'élément **<filter>** déclaré doit être associé à une URL grâce à l'élément **<filter-mapping>** : +
- +
-<file> +
-  <filter-mapping> +
-    <filter-name>SetCharacterEncoding</filter-name> +
-    <url-pattern>/*</url-pattern> +
-  </filter-mapping>+
 </file> </file>
  
Ligne 583: Ligne 823:
  
 <file> <file>
-    <servlet>+  <servlet>
     <servlet-name>Manager</servlet-name>     <servlet-name>Manager</servlet-name>
     <servlet-class>org.apache.catalina.manager.ManagerServlet</servlet-class>     <servlet-class>org.apache.catalina.manager.ManagerServlet</servlet-class>
Ligne 598: Ligne 838:
       <param-value>2</param-value>       <param-value>2</param-value>
     </init-param>     </init-param>
 +    <!-- Uncomment this to show proxy sessions from the Backup manager or a
 +         StoreManager in the sessions list for an application
 +    <init-param>
 +      <param-name>showProxySessions</param-name>
 +      <param-value>true</param-value>
 +    </init-param>
 +    -->
     <multipart-config>     <multipart-config>
 +      <!-- 50MB max -->
       <max-file-size>52428800</max-file-size>       <max-file-size>52428800</max-file-size>
       <max-request-size>52428800</max-request-size>       <max-request-size>52428800</max-request-size>
Ligne 643: Ligne 891:
  
 <file> <file>
- <security-constraint>+  <!-- Define a Security Constraint on this Application --> 
 +  <!-- NOTE:  None of these roles are present in the default users file --> 
 +  <security-constraint>
     <web-resource-collection>     <web-resource-collection>
       <web-resource-name>HTML Manager interface (for humans)</web-resource-name>       <web-resource-name>HTML Manager interface (for humans)</web-resource-name>
Ligne 682: Ligne 932:
     </auth-constraint>     </auth-constraint>
   </security-constraint>   </security-constraint>
 +
 +  <!-- Define the Login Configuration for this Application -->
   <login-config>   <login-config>
     <auth-method>BASIC</auth-method>     <auth-method>BASIC</auth-method>
     <realm-name>Tomcat Manager Application</realm-name>     <realm-name>Tomcat Manager Application</realm-name>
   </login-config>   </login-config>
 +
 +  <!-- Security roles referenced by this web application -->
   <security-role>   <security-role>
     <description>     <description>
Menu