Le user "service" crée des sessions à chaque call API dans l'instance Simplicité source

Ok désolé, donc la valve V4 avait évolué pour effectivement gérer une “session statique” sur “/api”.
Du coup, le prérequis est d’aller voir :

  • quelle valve est installée sur le serveur (à priori celle de l’image docker est ok)
  • et regarder le context.xml (si surchargé ou inhibé)

<Valve className="com.simplicite.tomcat.valves.APISessionValve"/>

ne doit pas être en commentaire ou absent.

D’ailleurs pour avoir plus d’info sur ce que fait la valve il est possible d’ajouter debug="true" sur le <Valve> du context.xml

Voici ce que j’ai dans l’image Docker pull en local pour mes tests:

[root@f91e2ac49101 conf]# pwd
/usr/local/tomcat/conf
[root@f91e2ac49101 conf]# ls -l *.xml
-rw-rw-r-- 1 root root   1431 Jul 12 08:51 context.xml
-rw-rw-r-- 1 root root   1172 Jul 12 08:51 jaspic-providers.xml
-rw-rw-r-- 1 root root   9962 Jul 12 08:51 server.xml
-rw-rw-r-- 1 root root   2812 Jul 12 08:51 tomcat-users.xml
-rw-rw-r-- 1 root root 177408 Sep 16 12:03 web.xml
[root@f91e2ac49101 conf]# grep Valve *
grep: Catalina: Is a directory
grep: Cataline: Is a directory
server.xml:     define subcomponents such as "Valves" at this level.
server.xml:       so you may not define subcomponents such as "Valves" at this level.
server.xml:        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
server.xml:        <Valve className="org.apache.catalina.valves.AccessLogValve"
[root@f91e2ac49101 conf]#

Sachant que j’ai modifié le web.xml pour y ajouter ça (pour obtenir plus d’info pour analyser le pb mais sans vraiment en maîtriser les impacts) :

<!-- BMO -->
<filter>
    <filter-name>requestdumper</filter-name>
    <filter-class>
        org.apache.catalina.filters.RequestDumperFilter
    </filter-class>
</filter>
<filter-mapping>
    <filter-name>requestdumper</filter-name>
    <url-pattern>*</url-pattern>
</filter-mapping>
<!-- BMO -->

La valve est déclarée dans le context.xml de la webapp.

:flushed: autant pour moi…
du coup j’essaye d’y ajouter debug="true" (j’ai vérifié qu’elle n’est pas commentée)

[root@f91e2ac49101 META-INF]# pwd
/usr/local/tomcat/webapps/ROOT/META-INF
[root@f91e2ac49101 META-INF]# ls -l *.xml
-rw-rw-r-- 1 root root 1271 Jul 16 08:25 context.xml
[root@f91e2ac49101 META-INF]# grep Valve *
        <Valve className="com.simplicite.tomcat.valves.APISessionValve"/>
[root@f91e2ac49101 META-INF]#

Ok ça veut bien dire qu’elle est active… avec le debug on y verra peut être un peu plus clair.

Je précise que la logique exacte de la valve c’est :

Si un session ID est passé dans la requête
  et si la session correspondante existe bien
  et si elle est active
Alors on reste dans cette session
Sinon on route sur la session "technique"

Ca permet de ne pas avoir d’effets bizarre entre une session UI et des appels API faits dans deux onglets/fenêtre du même navigateur… Dans le cas des appels curl standalone et des remote objects on est normalement systématiquement dans le cas Sinon (sauf bien sûr si on force un cookie JSESSIONID explicitement)

Bonjour David,

j’ai essayé de faire fonctionner deux instances Docker locales (en 5.1 et 4.0) sur mon poste mais je n’arrive pas à les faire communiquer ensemble… ça dépasse pour l’instant mes compétences (et ça sort du cadre du support Simplicité)… Je suis donc revenu sur nos infra Docker de dev centralisées mais j’ai très peu de marges de manœuvre.

J’ai réussi (je crois) à redéployer une instance avec le mode debug dans le context.xml de la webapp mais je n’ai accès qu’au contenu de logs/catalina.out. Comme je ne vois aucune trace de debug dans de fichier, je pense qu’elles vont ailleurs. Est-il possible de les écrire dans ce fichier ?

En Docker il ne faut pas utiliser “localhost” ou “127.0.0.1” car ce n’est pas la même chose vu du host ou de chaque containers. Dans mon test j’ai déployé 2 containers exposés via un reverse proxy sur des hostnames différents et c’est ces hostname que j’utilise pour les remote objects, je pense que si tu utilise l’IP de ton host ça devrait marcher dans ton cas

Pour le mode debug de la valve les traces vont normalement dans le catalina.out car ça utilise le “global logger”, je vais vérifier…

:flushed::grimacing:…je pensais avoir testé ça aussi mais j’ai dû passer à côté car en réessayant ça fonctionne!

J’arrive donc à lister depuis une instance “front” (en 4.0.P25) mes IT4ITProducts hébergés sur une autre instance “back” (en 5.1.2) sur laquelle j’ai modifié le fichier webapps/…/context.xml (debug=“true”). Mais je ne trouve aucune trace des calls API dans les logs disponibles sur “back” (j’ai une ligne de commande ssh ouverte sur le conteneur).

Et dans cette configuration, tout semble bien fonctionner:

  • un jeton API non expiré
  • pas de sessions ouvertes en // qui s’empilent dans “sessions en cours”
  • historique des sessions API avec juste deux entrées

Par comparaison, sur l’instance “back” de nos infras Docker centralisées, j’ai

  • un jeton API non expiré
  • plusieurs dizaines de sessions ouvertes en // qui s’empilent à chaque action UI dans “front” (par simple parcours des pages de la liste d’IT4ITProducts)
  • historique des sessions alimenté avec toutes les sessions ouvertes en // (cf. point ci-dessus)

J’ai finalement obtenu des traces de debug en ajoutant une section filter / requestDumper dans le fichier tomcat/conf/web.xml (source https://www.stackextend.com/java/tomcat/tomcat-debugging-tips-trace-full-request-content-of-all-coming-requests/).

2021-09-20 11:14:42,766|GLOBAL|INFO|2021-09-20 11:14:42,563|GLOBAL|INFO|http-nio-8080-exec-8 START TIME        =20-Sep-2021 11:14:42
2021-09-20 11:14:42,563|GLOBAL|INFO|http-nio-8080-exec-8         requestURI=//api/rest/IT4ITProduct/1
2021-09-20 11:14:42,564|GLOBAL|INFO|http-nio-8080-exec-8           authType=null
2021-09-20 11:14:42,564|GLOBAL|INFO|http-nio-8080-exec-8  characterEncoding=UTF-8
2021-09-20 11:14:42,564|GLOBAL|INFO|http-nio-8080-exec-8      contentLength=-1
2021-09-20 11:14:42,564|GLOBAL|INFO|http-nio-8080-exec-8        contentType=application/json; charset=UTF-8
2021-09-20 11:14:42,564|GLOBAL|INFO|http-nio-8080-exec-8        contextPath=
2021-09-20 11:14:42,564|GLOBAL|INFO|http-nio-8080-exec-8             cookie=JSESSIONID=789120F25682DF09AB2DC5BC2369EC18
2021-09-20 11:14:42,564|GLOBAL|INFO|http-nio-8080-exec-8             cookie=Path=/
2021-09-20 11:14:42,564|GLOBAL|INFO|http-nio-8080-exec-8             cookie=HttpOnly=
2021-09-20 11:14:42,564|GLOBAL|INFO|http-nio-8080-exec-8             header=content-type=application/json; charset=UTF-8
2021-09-20 11:14:42,564|GLOBAL|INFO|http-nio-8080-exec-8             header=cookie=JSESSIONID=789120F25682DF09AB2DC5BC2369EC18; Path=/; HttpOnly
2021-09-20 11:14:42,564|GLOBAL|INFO|http-nio-8080-exec-8             header=accept=application/json
2021-09-20 11:14:42,564|GLOBAL|INFO|http-nio-8080-exec-8             header=authorization=Bearer 9FyLPXVIkT8AD6wAB0ou3nz5m6tT1G58w9lMYTt3n6nLrPEIiK
2021-09-20 11:14:42,564|GLOBAL|INFO|http-nio-8080-exec-8             header=cache-control=no-cache
2021-09-20 11:14:42,564|GLOBAL|INFO|http-nio-8080-exec-8             header=pragma=no-cache
2021-09-20 11:14:42,564|GLOBAL|INFO|http-nio-8080-exec-8             header=user-agent=Java/16.0.1
2021-09-20 11:14:42,564|GLOBAL|INFO|http-nio-8080-exec-8             header=host=10.228.95.191:8180
2021-09-20 11:14:42,564|GLOBAL|INFO|http-nio-8080-exec-8             header=connection=keep-alive
2021-09-20 11:14:42,564|GLOBAL|INFO|http-nio-8080-exec-8             locale=en_US
2021-09-20 11:14:42,564|GLOBAL|INFO|http-nio-8080-exec-8             method=GET
2021-09-20 11:14:42,564|GLOBAL|INFO|http-nio-8080-exec-8           pathInfo=/IT4ITProduct/1
2021-09-20 11:14:42,564|GLOBAL|INFO|http-nio-8080-exec-8           protocol=HTTP/1.1
2021-09-20 11:14:42,564|GLOBAL|INFO|http-nio-8080-exec-8        queryString=null
2021-09-20 11:14:42,564|GLOBAL|INFO|http-nio-8080-exec-8         remoteAddr=172.17.0.1
2021-09-20 11:14:42,564|GLOBAL|INFO|http-nio-8080-exec-8         remoteHost=172.17.0.1
2021-09-20 11:14:42,564|GLOBAL|INFO|http-nio-8080-exec-8         remoteUser=null
2021-09-20 11:14:42,564|GLOBAL|INFO|http-nio-8080-exec-8 requestedSessionId=789120F25682DF09AB2DC5BC2369EC18
2021-09-20 11:14:42,564|GLOBAL|INFO|http-nio-8080-exec-8             scheme=http
2021-09-20 11:14:42,564|GLOBAL|INFO|http-nio-8080-exec-8         serverName=10.228.95.191
2021-09-20 11:14:42,565|GLOBAL|INFO|http-nio-8080-exec-8         serverPort=8180
2021-09-20 11:14:42,565|GLOBAL|INFO|http-nio-8080-exec-8        servletPath=/api/rest
2021-09-20 11:14:42,565|GLOBAL|INFO|http-nio-8080-exec-8           isSecure=false
2021-09-20 11:14:42,565|GLOBAL|INFO|http-nio-8080-exec-8 ------------------=--------------------------------------------
2021-09-20 11:14:42,765|GLOBAL|INFO|http-nio-8080-exec-8 ------------------=--------------------------------------------
2021-09-20 11:14:42,765|GLOBAL|INFO|http-nio-8080-exec-8           authType=null
2021-09-20 11:14:42,765|GLOBAL|INFO|http-nio-8080-exec-8        contentType=application/json;charset=UTF-8
2021-09-20 11:14:42,765|GLOBAL|INFO|http-nio-8080-exec-8             header=Set-Cookie=JSESSIONID=AB559C06003283F93BCF793BAFA5175A; Path=/; HttpOnly
2021-09-20 11:14:42,765|GLOBAL|INFO|http-nio-8080-exec-8             header=Date=Mon, 20 Sep 2021 09:14:42 GMT
2021-09-20 11:14:42,766|GLOBAL|INFO|http-nio-8080-exec-8             header=Last-Modified=Mon, 20 Sep 2021 09:14:42 GMT
2021-09-20 11:14:42,766|GLOBAL|INFO|http-nio-8080-exec-8             header=Expires=Thu, 01 Jan 1970 00:00:00 GMT
2021-09-20 11:14:42,766|GLOBAL|INFO|http-nio-8080-exec-8             header=Cache-Control=private, max-age=0, no-cache, no-store, no-transform
2021-09-20 11:14:42,766|GLOBAL|INFO|http-nio-8080-exec-8             header=Pragma=no-cache
2021-09-20 11:14:42,766|GLOBAL|INFO|http-nio-8080-exec-8             header=Content-Type=application/json;charset=UTF-8
2021-09-20 11:14:42,766|GLOBAL|INFO|http-nio-8080-exec-8             header=Content-Length=317
2021-09-20 11:14:42,766|GLOBAL|INFO|http-nio-8080-exec-8             header=Keep-Alive=timeout=60
2021-09-20 11:14:42,766|GLOBAL|INFO|http-nio-8080-exec-8             header=Connection=keep-alive
2021-09-20 11:14:42,766|GLOBAL|INFO|http-nio-8080-exec-8         remoteUser=null
2021-09-20 11:14:42,766|GLOBAL|INFO|http-nio-8080-exec-8             status=200
2021-09-20 11:14:42,766|GLOBAL|INFO|http-nio-8080-exec-8 END TIME          =20-Sep-2021 11:14:42
2021-09-20 11:14:42,766|GLOBAL|INFO|http-nio-8080-exec-8 ===============================================================

J’ai réussi à redéployer cette configuration sur notre infra centralisée… voici les traces obtenues d’un call similaire

2021-09-20 12:18:23,476|GLOBAL|INFO|2021-09-20 12:18:23,217|GLOBAL|INFO|http-nio-8443-exec-68 START TIME        =20-Sep-2021 12:18:23
2021-09-20 12:18:23,217|GLOBAL|INFO|http-nio-8443-exec-68         requestURI=//api/rest/IT4ITProduct/548
2021-09-20 12:18:23,217|GLOBAL|INFO|http-nio-8443-exec-68           authType=null
2021-09-20 12:18:23,217|GLOBAL|INFO|http-nio-8443-exec-68  characterEncoding=UTF-8
2021-09-20 12:18:23,217|GLOBAL|INFO|http-nio-8443-exec-68      contentLength=-1
2021-09-20 12:18:23,217|GLOBAL|INFO|http-nio-8443-exec-68        contentType=application/json; charset=UTF-8
2021-09-20 12:18:23,217|GLOBAL|INFO|http-nio-8443-exec-68        contextPath=
2021-09-20 12:18:23,217|GLOBAL|INFO|http-nio-8443-exec-68             cookie=AWSALB=jLbRWKKZNgRHKfKkLQnxVUvs1C3tLCm2iH4xai2zEHSW/RDYf5Jo1oDnwo8z93ycIWbRHy+t++GoPjQd4jXTZRxuwejF32AoZtX9RALFv6zowEy0Ty1/45WCRxHe
2021-09-20 12:18:23,217|GLOBAL|INFO|http-nio-8443-exec-68             cookie=Path=/
2021-09-20 12:18:23,217|GLOBAL|INFO|http-nio-8443-exec-68             header=host=int.rfi.dev.aws.renault.com
2021-09-20 12:18:23,217|GLOBAL|INFO|http-nio-8443-exec-68             header=x-real-ip=22.9.19.10
2021-09-20 12:18:23,217|GLOBAL|INFO|http-nio-8443-exec-68             header=x-forwarded-for=138.21.12.24, 22.9.19.10
2021-09-20 12:18:23,217|GLOBAL|INFO|http-nio-8443-exec-68             header=x-forwarded-proto=https
2021-09-20 12:18:23,217|GLOBAL|INFO|http-nio-8443-exec-68             header=connection=upgrade
2021-09-20 12:18:23,217|GLOBAL|INFO|http-nio-8443-exec-68             header=x-forwarded-port=443
2021-09-20 12:18:23,217|GLOBAL|INFO|http-nio-8443-exec-68             header=x-amzn-trace-id=Root=1-61485fef-5f7a2ef6049c2c6b0a179bd0
2021-09-20 12:18:23,217|GLOBAL|INFO|http-nio-8443-exec-68             header=content-type=application/json; charset=UTF-8
2021-09-20 12:18:23,217|GLOBAL|INFO|http-nio-8443-exec-68             header=cookie=AWSALB=jLbRWKKZNgRHKfKkLQnxVUvs1C3tLCm2iH4xai2zEHSW/RDYf5Jo1oDnwo8z93ycIWbRHy+t++GoPjQd4jXTZRxuwejF32AoZtX9RALFv6zowEy0Ty1/45WCRxHe; Expires=Mon, 27 Sep 2021 10:17:55 GMT; Path=/
2021-09-20 12:18:23,217|GLOBAL|INFO|http-nio-8443-exec-68             header=accept=application/json
2021-09-20 12:18:23,217|GLOBAL|INFO|http-nio-8443-exec-68             header=authorization=Bearer 6egP6K2jdNPiNkJzbjTubXnObx3laF4iKAdI0OwSmiRL2TL9Ox
2021-09-20 12:18:23,217|GLOBAL|INFO|http-nio-8443-exec-68             header=cache-control=no-cache
2021-09-20 12:18:23,217|GLOBAL|INFO|http-nio-8443-exec-68             header=pragma=no-cache
2021-09-20 12:18:23,217|GLOBAL|INFO|http-nio-8443-exec-68             header=user-agent=Java/16.0.1
2021-09-20 12:18:23,217|GLOBAL|INFO|http-nio-8443-exec-68             header=x-dynatrace-application=1%3B1%3Bd4005c1f44e0045a
2021-09-20 12:18:23,217|GLOBAL|INFO|http-nio-8443-exec-68             header=x-dynatrace-origin-url=http://int.rfi.dev.aws.renault.com/api/rest/IT4ITProduct/548
2021-09-20 12:18:23,218|GLOBAL|INFO|http-nio-8443-exec-68             header=x-dynatrace-requeststate=agentId=0x4f36f3ea86fcb67f&pathDepth=1
2021-09-20 12:18:23,218|GLOBAL|INFO|http-nio-8443-exec-68             header=x-dynatrace=FW4;-1744823332;47;-2030258561;1261;3;1990310540;549;dc5a;2h01;3h86fcb67f;4h04ed;5h01;6hc600e6802177e1c277132d570cb67eab;7ha911fcb5152b4435
2021-09-20 12:18:23,218|GLOBAL|INFO|http-nio-8443-exec-68             header=traceparent=00-c600e6802177e1c277132d570cb67eab-a911fcb5152b4435-01
2021-09-20 12:18:23,218|GLOBAL|INFO|http-nio-8443-exec-68             header=tracestate=76a1ba8c-98001bdc@dt=fw4;2f;86fcb67f;4ed;3;0;0;225;2930;2h01;3h86fcb67f;4h04ed;5h01;7ha911fcb5152b4435
2021-09-20 12:18:23,218|GLOBAL|INFO|http-nio-8443-exec-68             header=x-ruxit-forwarded-for=138.21.12.24
2021-09-20 12:18:23,218|GLOBAL|INFO|http-nio-8443-exec-68             locale=en_US
2021-09-20 12:18:23,218|GLOBAL|INFO|http-nio-8443-exec-68             method=GET
2021-09-20 12:18:23,218|GLOBAL|INFO|http-nio-8443-exec-68           pathInfo=/IT4ITProduct/548
2021-09-20 12:18:23,218|GLOBAL|INFO|http-nio-8443-exec-68           protocol=HTTP/1.1
2021-09-20 12:18:23,218|GLOBAL|INFO|http-nio-8443-exec-68        queryString=null
2021-09-20 12:18:23,218|GLOBAL|INFO|http-nio-8443-exec-68         remoteAddr=172.17.0.5
2021-09-20 12:18:23,218|GLOBAL|INFO|http-nio-8443-exec-68         remoteHost=172.17.0.5
2021-09-20 12:18:23,218|GLOBAL|INFO|http-nio-8443-exec-68         remoteUser=null
2021-09-20 12:18:23,218|GLOBAL|INFO|http-nio-8443-exec-68 requestedSessionId=null
2021-09-20 12:18:23,218|GLOBAL|INFO|http-nio-8443-exec-68             scheme=https
2021-09-20 12:18:23,218|GLOBAL|INFO|http-nio-8443-exec-68         serverName=int.rfi.dev.aws.renault.com
2021-09-20 12:18:23,218|GLOBAL|INFO|http-nio-8443-exec-68         serverPort=443
2021-09-20 12:18:23,218|GLOBAL|INFO|http-nio-8443-exec-68        servletPath=/api/rest
2021-09-20 12:18:23,218|GLOBAL|INFO|http-nio-8443-exec-68           isSecure=true
2021-09-20 12:18:23,218|GLOBAL|INFO|http-nio-8443-exec-68 ------------------=--------------------------------------------
2021-09-20 12:18:23,476|GLOBAL|INFO|http-nio-8443-exec-68 ------------------=--------------------------------------------
2021-09-20 12:18:23,476|GLOBAL|INFO|http-nio-8443-exec-68           authType=null
2021-09-20 12:18:23,476|GLOBAL|INFO|http-nio-8443-exec-68        contentType=application/json;charset=UTF-8
2021-09-20 12:18:23,476|GLOBAL|INFO|http-nio-8443-exec-68             header=Set-Cookie=JSESSIONID=1A64F05A49B6D396AE511450C0B92ABD; Path=/; Secure; HttpOnly
2021-09-20 12:18:23,476|GLOBAL|INFO|http-nio-8443-exec-68             header=Date=Mon, 20 Sep 2021 10:18:23 GMT
2021-09-20 12:18:23,476|GLOBAL|INFO|http-nio-8443-exec-68             header=Last-Modified=Mon, 20 Sep 2021 10:18:23 GMT
2021-09-20 12:18:23,476|GLOBAL|INFO|http-nio-8443-exec-68             header=Expires=Thu, 01 Jan 1970 00:00:00 GMT
2021-09-20 12:18:23,476|GLOBAL|INFO|http-nio-8443-exec-68             header=Content-Type=application/json;charset=UTF-8
2021-09-20 12:18:23,476|GLOBAL|INFO|http-nio-8443-exec-68             header=Content-Length=338
2021-09-20 12:18:23,476|GLOBAL|INFO|http-nio-8443-exec-68         remoteUser=null
2021-09-20 12:18:23,476|GLOBAL|INFO|http-nio-8443-exec-68             status=200
2021-09-20 12:18:23,476|GLOBAL|INFO|http-nio-8443-exec-68 END TIME          =20-Sep-2021 12:18:23
2021-09-20 12:18:23,476|GLOBAL|INFO|http-nio-8443-exec-68 ===============================================================

Il y a de nombreux cookies autres introduits via la stack AWS et en particulier un qui n’est pas dans les HEADERS des échanges sur la stack AWS mais qui est sur les HEADERS des écnahges sur la stack Docker locale:

2021-09-20 11:14:42,564|GLOBAL|INFO|http-nio-8080-exec-8             cookie=JSESSIONID=789120F25682DF09AB2DC5BC2369EC18

Plus précisément,

Dans le contexte Docker local,

  • lors d’un scénario API (“front” GET /api/rest sur “back”), plusieurs cookies sont mobilisés (dont “JSESSIONID”) et persistent dans les échanges

Dans le contexte AWS:

  • lors d’un scénario UI (“back” liste sur “back”), plusieurs cookies sont mobilisés (dont “JSESSIONID” et “AWSALB” qui semble impliqué dans les mécanismes de load balancing / sticky session AWS) et persistent dans les échanges
  • lors d’un scénario API (“front” GET /api/rest sur “back”), il n’y a pas d’autre cookie que “AWSLAB” → les autres (dont “JSESSIONID”) ne sont pas injectés ou sont filtrés en amont…

Dans tous les cas, le HEADER “Authorization: Bearer…” est bien présent…

La raison d’être de la valve est de réattribuer les requêtes en /api/* à la session “technique”.

Les requêtes API sans le cookie JSESSIONID sont donc bien gérées c’est même ce qui devrait être le cas nominal.

Le set cookie JSESSIONID retourné par le 1er appel API est celui de la session “technique” donc pas de pb à le repasser pour les requêtes suivantes mais c’est neutre car de toute façon les requêtes API sont réaffectées à cette session “technique”

PS: Le seul cas tordu que gère la valve c’est le cas où on reçoit une requête API avec un JSESSIONID valide mais différent de celui de la session “technique” => dans ce cas la valve ne réaffecte pas la requête à la session “technique” => ce cas est là uniquement pour le cas d’une personne qui a une session UI ouverte dans son navigateur et qui fait en // des appels API dans un autre onglet de son navigateur (ça évite de “tuer” la session UI en faisant un appel API)

J’ai l’impression de comprendre mais dans le contexte AWS (quel que soit l’environnement), il semble qu’à chaque nouvel appel API plusieurs sessions “techniques” soit créées (cf. copie d’écran ci-dessous prise après avoir parcouru sur “front” 7 pages de l’objet IT4ITProduct hébergé par “back”)

Dans le contexte docker local, une seule session 'technique" apparaît ici…

A la relecture du code de la valve je ne vois pas de raison qu’une nouvelle session “technique” soit recréée (sauf si le timeout de la valve est positionné à une valeur > 0 et que celle-ci finisse donc par expirer)

Comment vérifier ça ?

Je suis désolé d’être aussi pénible mais là, je suis dans le mood image

Sur le tag <Valve/> il peut y avoir un attribut timeout mais il n’y est pas par défaut

Donc s’il y est c’est que quelqu’un l’y a mis volontairement

Je confirme qu’il n’y en a pas…

Voici un extrait du contenu du fichier webapps/…/context.xml récupéré via Runtime.getRuntime().exec(“cat /usr/local/tomcat/webapps/ROOT/META-INF/context.xml”)…

	<!-- API sessions valve (automatic reuse of server session based on user token) -->
	<Valve className="com.simplicite.tomcat.valves.APISessionValve" debug="true"/>

Voici les traces détaillées générées en consultant depuis “front” (objet service) les pages 1 à 10 de l’objet IT4ITProduct hébergé par “back” (objet métier).

Cette séquence a généré 21 sessions “techniques”.

flow_20210920_145400.log (58.7 KB)

OK pas de subtilité de load balancing.

Ce que je vois dans tes traces c’est des doubles / dans les URI requêtées :

2021-09-20 14:53:47,812|GLOBAL|INFO|http-nio-8443-exec-15         requestURI=//api/rest/IT4ITProduct

Du coup //api ne matche pas la regexp de la valve qui teste si ça commence par /api

Si c’est ça, tout s’explique, mais il va falloir comprendre pourquoi un / additionnel se rajoute abusivement quelque part