OK on a ici plusieurs aspects à distinguer:
- Session:
Le endpoint API n’a pas besoin du cookie de session, s’il est là tant mieux mais sinon, sa logique est de retrouver, si elle existe, une éventuelle session associée au token ou d’en créer une nouvelle.
Au sein de cette session les instances d’objets métier utilisées sont géré par un pool synchronisé (donc pas de risque de comportements non thread safe).
Cette session est donc purement “technique” et donc transparente pour l’appelant (à part le cookie de session retourné par Tomcat qu’on peu ignorer), elle expire par défaut en 60s. Comme je l’ai dit dans un post précédent le reverse proxying en sticky session n’est obligatoire que pour les accès UI, il est facultatif dans le cas d’accès API.
- URI d’appel:
Oublions le cas des APIs standards (celles sur /api/rest/<object>
) car ce n’est pas le sujet.
S’agissant des APIs customs, les 2 URI qui sont sensées marcher sont:
- Sans mapping d’URI:
/api/ext/SitesServicesV1/(..)
(ex: /api/ext/SitesServices/sites
)
- Avec mapping d’URI: /
sites/v1/(...)
(ex: /sites/v1/sites
)
Dans tes tests tu indiques une URI en /api/ext/SitesServicesV1/v1/sites, celle là n’est pas sensée marcher car il n’y a pas d’objet mappé sur le nom “v1” (elle reverra alors une erreur 400, avec le message “Object v1 not configured”).
Peux tu vérifier si la “tuyauterie” (reverse proxies, agrégateurs d’APIs etc.) par laquelle passent les URI chez vous sont bien configurées pour taper, au final au niveau Tomcat, sur l’une des base URI valides (i.e. soit /api/ext/SitesServicesV1
soit /sites/v1
) ?
- Load balancing:
Si je comprends bien ce que tu fais comme test, tu tape au niveau du load balancer (ce que tu appelle le “backend”). Serait il possible de:
- taper directement sur l’un (puis l’autre) des noeud Tomcat load balancé sans passer par le load balancer
ou
- avoir un load balancer qui ne fasse, dans un premier temps, que du routage sur 1 seul neud Tomcat (autrement dit avoir un load balancer qui ne fait finalement que du reverse proxiing)
Il y a toujours des subtilités et des surprises avec les infrastructures à base de load balancers et bien sûr ce ne sont jamais les mêmes en fonction du load balancer utilisé.
Est-ce que vous utilisez toujours Traefik comme load balancer ?