Qual o tamanho máximo de uma sessão?

Srs.,

Qual o tamanho máximo de uma sessão?

Como assim tamanho máximo?
a sessão é um objeto criado no servidor que armazena diversos atributos, depende da capacidade do seu servidor.

Por exemplo, quantos kb ou Mb ou Gb posso armazenar em uma sessão?

O quanto de memoria vc tiver

Rafael

Na prática isso depende um pouco do seu ambiente e do número de usuários simultâneos de sua aplicação. Você deve fazer algumas contas.

Você pode ter uma idéia aproximada do tamanho de uma sessão serializando todos os objetos que estão contidos nela, e multiplicando o valor obtido por 2 (já que a maior parte dos objetos em sessão costumam ser strings, e 1 caracter = 2 bytes).

Se sua aplicação é um Internet Banking, por exemplo (máquinas em cluster, milhares de usuários simultâneos, etc.) guarde o mínimo possível de informação, talvez 1 a 5KB . Quando a sessão é replicada no cluster, então o tamanho da sessão deve ser minimizado.

Se sua aplicação está em ambiente Intranet em uma empresa com poucos usuários simultâneos (normalmente é uma máquina sozinha que roda essa aplicação), você já pode usar bem mais dados de sessão.

Srs.,
O problema é que vou precisar armazenar campos do tipo Blob na sessão que poderá ter centenas de caracteres…

Hun, e por que exatamente você precisa de um campo BLOB na sessão?

Por causa que criei um campo que deverá ser incrementado infinitas vezes podendo por exemplo ter mais de 1.000 caracteres que devem ser passados para sessão.

Há possibilidade de fazer isso, porém eu não consigo imaginar algo que justifique colocar uma informação dessas na sessão.
Eu estou desenvolvendo algo do tipo também, porém no meu caso o texto terá cerca de 20 mil caracteres. Eu diminui ao máximo o acesso a essa informação, recuperando-a somente quando extremamente necessário, e passo ela por request mesmo.
Se por exemplo você tiver um acesso de 1000 usuários ao mesmo tempo, você guardará 1000 campos BLOB na sessão?

Olá

  1. Dificilmente eu usaria Blob neste caso

  2. Dificilmente eu colocaria na sessão objetos muito grandes se a arquitetura do meu sistema permitisse outras opções como por exemplo armazenar o objeto em um arquivo e colocar apenas um apontador na sessão (repito, nem sempre isto é aconselhável porque pode complicar a escalabilidade)

  3. Se eu fosse obrigado a armazenar algo grande na sessão compararia as vantagens e desvantagens de armazenar o objeto zipado.

[]s
Luca

Rafael,

Somente uma pessoa terá autorização para utilizar essa minha usecase, acho que tb vou passar essa informação por request (creio que não vai passar de 20.000 caracteres) mas, pegunta de prova: o request aguenta?

Aqui sem problemas.
Se bem que o máximo que cheguei aqui enquanto testo foram uns 4 mil caracteres.

Rafael,

Segundo o guia de certificação da Sun.

http://java.boot.by/wcd-guide/ch01.html#c1s1

O tamanho de um request não pode exceder 1024 bytes. Então minha dúvida é:
Quantos caracters cabem em um espaço de 1024 bytes?

Poucos, bem poucos.
Um arquivo meu com 20.000 caracteres deu 107Kb

Rafael,

“Viajei” agora, se vc tem um arquivo de 107 Kb para passar pelo request e tá escrito que só se passa 1024 bytes!? Mas 1024 bytes não é igual a 1kb. Ou não, não me lembro…Se assim for o request não aceita.(segundo a Sun)

[quote=feaupi]Rafael,

Segundo o guia de certificação da Sun.

http://java.boot.by/wcd-guide/ch01.html#c1s1

O tamanho de um request não pode exceder 1024 bytes. Então minha dúvida é:
Quantos caracters cabem em um espaço de 1024 bytes?[/quote]

Isso quando vc envia utilizando o método GET do HTTP.
Usando POST, o tamanho é ilimitado.

O que você leu, é sobre o método GET do protocolo HTTP, por ele as requisições são passadas através da URL(e nela sim você não vai conseguir ultrapassar os 1024 bytes).
Você pode passar isso por método POST(não sei se pelo PUT também, vou verificar).
E 1024bytes é igual a 1kb sim.

Olá

[quote=feaupi]
Segundo o guia de certificação da Sun.

http://java.boot.by/wcd-guide/ch01.html#c1s1[/quote]

Este site é bom mas não é da Sun.

Em nenhum lugar está escrito limite para o request. O limite é da query string enviada com GET (versões diferentes de servidor web da M$ adotam limites diferentes). Com POST não foi dito nada. Mas é claro que um POST enorme pode afetar seu desempenho.

Um bom site para todo mundo que desenvolve para web: http://www.w3.org/Protocols/rfc2616/rfc2616.html

[]s
Luca

Rafael,

O conteúdo do meu campo é passado da seguinte maneira.Por Ex.:

....getRequestDispatcher("Coisa.jsp?variavel=valor");

Pelo que entendi vc conseguiu passar 4.000 caracteres como valor da variável acima??

Assim você não vai conseguir mesmo, passando deste jeito é o mesmo que você utilizar o método GET, é meio complicado passar esse tipo de informação na URL.
Faz um request.setAttribute(“variavel”, valor);
E na sua JSP recupera com request.getAttribute(“variavel”);