Vous pouvez utiliser une table de base de données pour collecter et stocker les données de session. Si vous utilisez une table de base de données pour la persistance des données, vous devez créer et définir une table de base de données associée au serveur d'applications.
Pourquoi et quand exécuter cette tâche
Lorsque le gestionnaire de sessions est défini pour la persistance de la base de données, il crée une table qu'il peut utiliser. Si vous voulez étendre les limites de taille des colonnes pour qu'elles soient mieux adaptées à votre site Web, vous pouvez créer une table externe. Si cette dernière est indiquée en tant que table cible lors de la
configuration de la persistance de la base de données du gestionnaire
de session, elle est utilisée lors du démarrage du gestionnaire de
session.
Dans la plupart des cas, il est préférable de laisser le gestionnaire de sessions créer la table au démarrage.
Pour créer une table pour la collecte des données de session, effectuez les opérations suivantes :
- Demandez à l'administrateur de créer une table de base de données pour stocker les données de session à l'aide de l'un des langages de définition de données (DDL) suivant : Pour DB2 :
CREATE TABLE <SchemaName>.sessions (
ID VARCHAR(128) NOT NULL,
PROPID VARCHAR(128) NOT NULL,
APPNAME VARCHAR(128) NOT NULL,
LISTENERCNT SMALLINT,
LASTACCESS BIGINT,
CREATIONTIME BIGINT,
MAXINACTIVETIME INTEGER ,
USERNAME VARCHAR(256) ,
SMALL VARCHAR(3122) FOR BIT DATA ,
MEDIUM LONG VARCHAR FOR BIT DATA ,
LARGE BLOB(2M)
)
Pour Oracle :CREATE TABLE SESSIONS (
ID VARCHAR(128) NOT NULL,
PROPID VARCHAR(128) NOT NULL,
APPNAME VARCHAR(128) NOT NULL,
LISTENERCNT SMALLINT,
LASTACCESS INTEGER,
CREATIONTIME INTEGER,
MAXINACTIVETIME INTEGER ,
USERNAME VARCHAR(256) ,
SMALL RAW(2000),
MEDIUM LONG RAW ,
LARGE RAW(1)
)
Si la propriété personnalisée du conteneur Web UseOracleBLOB est définie à true :CREATE TABLE SESSIONS (
ID VARCHAR(128) NOT NULL,
PROPID VARCHAR(128) NOT NULL,
APPNAME VARCHAR(128) NOT NULL,
LISTENERCNT SMALLINT,
LASTACCESS INTEGER,
CREATIONTIME INTEGER,
MAXINACTIVETIME INTEGER ,
USERNAME VARCHAR(256) ,
SMALL RAW(2000),
MEDIUM BLOB,
LARGE RAW(1)
)
Avertissement : - Lors de l'exécution, le gestionnaire de session accède à la table avec l'identité
du serveur Java™ Platform, Enterprise Edition (Java EE)
sur lequel l'application Web propriétaire est déployée. Tout conteneur Web configuré pour utiliser des sessions persistantes
doit pouvoir accéder en lecture et en écriture à la table de base de
données du sujet.
- Le traitement des sessions HTTP utilise l'index défini avec l'instruction
CREATE INDEX afin d'éviter les blocages de base de données. Dans certaines
situations, notamment lorsqu'une taille de table relativement petite est définie pour la
base de données, DB2 peut décider de ne pas utiliser cet index. Si l'index n'est pas utilisé, des blocages de base de données peuvent survenir. Dans ce cas, voir le guide d'administration DB2 de la version de DB2 que vous utilisez pour les recommandations sur la manière de calculer l'espace nécessaire à un index et ajuster, en conséquence, la taille des tables que vous utilisez.
- Il peut s'avérer nécessaire d'ajuster DB2 afin d'utiliser efficacement la table de
base de données des sessions et d'éviter des blocages lorsque vous y accédez. L'administrateur
DB2 trouvera des informations spécifiques sur l'optimisation de la version de DB2 utilisée
dans le guide d'administration de DB2.
- Lors de l'exécution, le gestionnaire de sessions peut créer une entrée dans la base de données
pour chaque module Web de l'application. Cette ligne de données
est utilisée en interne à des fins de gestion des sessions, par exemple en cas d'invalidation
d'une session. Ne vous souciez pas de cette entrée. Vous pouvez l'ignorer.
- Si une contrainte de clé primaire est nécessaire pour la table de base de données des sessions, la contrainte de clé primaire doit être définie en utilisant les colonnes ID, PROPID et APPNAME.
Configurez une table pour la persistance des sessions.