Home

# Using JDBCStore for Session persistence

## What is JDBCStore?

Is an implementation of a tomcat 4.X Store that use a table to store sessions. When to store sessions is configured in the Manager, currently the only Manager supported is the PersistentManager. Please consult the Manager manual for configuring the PersistentManager.
All the parameters, drivers, tables, and columns are user configurable.

## Example Config for JDBCStore

This is an example of how to set up a JDBCStore. For this example I used the MySQL JDBC driver.

### 1. Create a database.

> I made the database named "tomcat"

### 2. Create the needed table.

> #### 1. The session table.

> > This table holds the sessions currently stored due to backup/swapout/maxidle or other criteria met.

>     create database tomcat;

>     create table tomcat$sessions
>     (
>         id varchar(100) not null primary key,
>         valid char(1) not null,
>         maxinactive int not null,
>         lastaccess bigint,
>         data mediumblob
>     );

> > > Here is sample output from the tables:

>     mysql> create database tomcat;
>     Query OK, 1 row affected (0.02 sec)

>     mysql> use tomcat;
>     Database changed

>     mysql> create table tomcat$sessions
>         -> (
>         -> id varchar(100) not null primary key,
>         -> valid char(1) not null,
>         -> maxinactive int not null,
>         -> lastaccess bigint,
>         -> data mediumblob);
>     Query OK, 0 rows affected (0.01 sec)

> ### 3. Configure Tomcat

> > Add the information to the server.xml file. Make sure that you configure the Store inside a Manger. PersistentManager is the only one supported as of writing. For this example I used this entry inside:

> `<Manager className="org.apache.catalina.session.PersistentManager" debug="0" saveOnRestart="true" maxActiveSessions="-1" minIdleSwap="-1" maxIdleSwap="-1" maxIdleBackup="-1"> <Store className="org.apache.catalina.session.JDBCStore" driverName="org.gjt.mm.mysql.Driver" connectionURL="jdbc:mysql://localhost/tomcat?user=test&amp;password=test" sessionTable="tomcat$sessions" sessionIdCol="id" sessionDataCol="data" sessionValidCol="valid" sessionMaxInactiveCol="maxinactive" sessionLastAccessedCol="lastaccess" checkInterval="60" debug="99" /> <Manager>`

> The meaning of the attributes is as follow:

> attribute | Meaning
> --- | ---
> className | The class to use as a Store, If you want to use a different Store than JDBCStore you're reading the wrong file
> driverName | The name of the driver needed to connect to the database
> connectionURL | The connection URL used to connect to the database
> sessionTable | The table in which we store our sessions
> sessionIdCol | The column in the session table that contains the session ID
> sessionDataCol | The column in the session table that contains the session data
> sessionValidCol | The column in the session table that holds if the session is valid or not.
> sessionMaxInactiveCol | The column in the session table that contains the sessions Max Inactive property
> sessionLastAccessedCol | The column in the session table that contains the last accesed time
> checkInterval | The time in seconds for the processExpires thread to sleep, a lower value causes more accurate expiring and removing old sessions from the RDBMS but could cause a heavily loaded site to go on it's knees if set to low.
> debug | The debug level for this Store, 0 means don't log any debug information and that's probably what you would want for a production enviroment.

> $Header: /home/cvs/jakarta-tomcat-4.0/catalina/docs/JDBCStore-howto.html,v 1.1.2.1 2002/03/26 14:18:42 jfclere Exp $