Tito
Tito

Reputation: 9044

Manage sessions in multiple server environment

Suppose I have more than one web application servers running and I am logging in a User from Server1 thus his session starts.As http is stateless, suppose if the next request goes to Server3 than the Sever1 which was used to login to the application,if I use cookies, hidden form , its not going to work in Server2.

So how do I manage the session ?, maybe by generating an ID (or even reusing the jsessioid generated ) and storing it in a central database,so that all servers can access this session ID and validate it before processing the request.Then in that case, I need to develop a mechanism to store all the session data as object to the database.

Is there any other built in mechanisms available ?

Upvotes: 11

Views: 17737

Answers (3)

smali
smali

Reputation: 4805

Spring provides the session management:

Spring Session makes it trivial to support clustered sessions without being tied to an application container specific solution. It also provides transparent integration with:

HttpSession - allows replacing the HttpSession in an application container (i.e. Tomcat) neutral way, with support for providing session IDs in headers to work with RESTful APIs

WebSocket - provides the ability to keep the HttpSession alive when receiving WebSocket messages

WebSession - allows replacing the Spring WebFlux’s WebSession in an application container neutral way Source: Spring docs.

Please check this for further information: https://spring.io/projects/spring-session#overview

Upvotes: 2

Novice User
Novice User

Reputation: 3824

If your infrastructure ( Server 1, 2...) are connected to a single network appliance like Citrix Netscalar, then you can use IP or Cookie Persistence so that netscalar sends further requests to the same server.

Upvotes: -1

Manish
Manish

Reputation: 3968

If you are deploying application on more than one server, you should use "Clustering". Application servers are able to handle this scenario using "session replication". With session replication, each server will have a copy of the active users session. IF the first request goes to server A and second request goes to server B, it will be transparent to application code and end user.

For clustering/session replication in Tomcat, you can have a look at this link.

Upvotes: 12

Related Questions