Hello,
we have a problem replicating sessions using Tomcat.
We are using two servers which are load-balanced using Apache. We want to
achieve session preservation over multiple requests of the same user (he might
be forwarded to different servers for those requests).
What we tried to set up until now is database replication of the sessions using
Tomcat's PersistentManager and the JDBCStore with a MySQL database. But if we
request a page on one server only it takes about 10-60 seconds until the
session is written to the database. Of course, the other server does not know
about the session during this time and will create another session, if the
second request goes to this server. Is this a known problem of the
PersistentManager or might there be a misconfiguration?
The problem is actually not the replication but the delayed writing of the
PersistentManager to the database.
This is what we put into server.xml:
<Context docBase="jsp-examples" path="/jsp-examples">
<Manager className="org.apache.catalina.session.PersistentManager"
maxIdleBackup="0" maxIdleSwap="0" checkInterval="1">
<Store className="org.apache.catalina.session.JDBCStore"
connectionURL="jdbc:mysql://host/db?user=user&password=password"
driverName="com.mysql.jdbc.Driver"
debug="4"
sessionIdCol="session_id"
sessionValidCol="valid_session"
sessionMaxInactiveCol="max_inactive"
sessionLastAccessedCol="last_access"
sessionTable = "tomcat_sessions"
sessionAppCol = "app_context"
sessionDataCol = "session_data"
/>
</Manager>
</Context>
We read on Tomcat's website that the PersistentManager should be considered
"experimental". Might that be the problem or can anyone suggest another
solution for session replication?
Thank you for your help,
Nino Ulsamer