É possível utilizar uma tabela de banco de dados para coletar e armazenar dados de sessão. Se você estiver utilizando uma tabela de banco de dados para persistência de sessão, deverá criar
e definir uma tabela de banco de dados que esteja associada ao servidor de aplicativos.
Sobre Esta Tarefa
Sempre que o gerenciador de sessões é configurado para persistência de
banco de dados, ele cria uma tabela para seu uso. Se deseja
expandir o limite de tamanho da coluna para deixá-la mais
apropriadas para seu Web site, é possível criar uma tabela
externamente. Se a tabela externa for especificada
como a tabela de destino na configuração de persistência do banco de dados do gerenciador de sessões, durante a inicialização do gerenciador de sessões, a
tabela externa será utilizada.
Na maioria dos casos,
é melhor deixar que o gerenciador de sessões crie a tabela durante a inicialização.
Para
criar uma tabela para coletar dados de sessão, faça o seguinte:
- Peça a seu administrador para criar uma tabela de banco de dados para armazenar seus
dados de sessão utilizando uma das seguintes DDLs (Data Definition Languages): Para 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)
)
Para 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)
)
Se a propriedade customizada UseOracleBLOB do contêiner da
Web estiver definida para verdade, então:
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)
)
Atenção: - No tempo de execução, o gerenciador de sessões acessa a tabela de
destino utilizando a identidade do servidor Java™ Platform, Enterprise Edition (Java EE)
na qual o respectivo aplicativo da Web está implementado. Qualquer contêiner da Web que esteja configurado para usar sessões
persistentes deve ter acesso de leitura e atualização para a tabela
de banco de dados do assunto.
- O processamento da sessão HTTP utiliza o índice definido utilizando a instrução CREATE INDEX para evitar congelamentos do banco de dados. Em algumas situações, por exemplo, quando um tamanho de tabela
relativamente pequeno é definido para o banco de dados, o DB2 pode decidir não utilizar esse índice. Quando o índice não é utilizado, podem ocorrer conflitos de banco de dados. Se ocorrerem conflitos e banco de dados, consulte o Guia de Administração do DB2 para a versão do DB2 que você está utilizando para obter recomendações sobre como calcular o espaço necessário para um índice e ajustar apropriadamente o tamanho das tabelas que estão sendo utilizadas.
- Pode ser necessário ajustar o DB2 para fazer uso eficiente da tabela de banco de dados e para evitar conflitos ao acessá-la. Seu administrador do DB2 deve consultar o Guia de Administração do DB2 para obter informações específicas sobre o ajuste da versão do
DB2 que você está utilizando.
- Durante o tempo de execução, o gerenciador de sessões pode criar uma entrada no banco de dados para cada módulo da Web do aplicativo. Essa linha de dados é usada internamente para propósitos de gerenciamento de sessões, como na invalidação de sessão. Não se preocupe com essa entrada. Ela pode ser ignorada.
- Se uma restrição de chave primária for requerida para a tabela de banco de dados das sessões, a restrição de chave primária deve ser definida usando as colunas ID, PROPID e APPNAME.
Configure uma tabela para persistência de sessão.