Si vous ne souhaitez pas utiliser la session de la façon dont il est censé être utilisé, alors ne l'utilisez pas du tout - développer votre propre objet de session. Il peut encore implémenter HttpSession
, et même s'étendre d'une implémentation de HttpSession
.
Vous pouvez utiliser un Filter
pour envelopper votre demande afin qu'elle retourne votre objet de session plutôt que le standard. Dans votre session, vous pouvez stocker des éléments dans la base de données plutôt que dans la mémoire.
Au lieu d'écrire à la DB, vous pouvez utiliser Hazelcast - il fournit des collections distribuées. Mais je suppose que cela prendra le même effort que pour configurer la réplication de session. Et la réplication de session n'est pas quelque chose d'aussi difficile - elle est supportée par tous les conteneurs.
Ce sont des lignes directrices approximatives, la tâche ne sera pas trivial. Et je vous recommande de rester fidèle aux modèles d'utilisation de session standard et de stocker des éléments dans la base de données uniquement si cela est réellement nécessaire. Afin d'éviter le besoin de réplication, vous pouvez essayer d'utiliser des sessions persistantes, c'est-à-dire lorsqu'un utilisateur est dirigé vers un serveur par l'équilibreur de charge, chaque requête ultérieure de cet utilisateur est envoyée au même serveur.
Par curiosité, avez-vous regardé Elastic Beanstalk d'Amazon? Ils fournissent des sessions collantes. – stepanian