Tenho um servidor rodando Conectiva Linux, JDK 1.4 e Tomcat 4.1.18.
Tenho uma página JSP que instancia uma variavel compartilhada chamada con com uma conexão para um banco Firebird. Acontece que a cada submissão à página, um novo objeto con é criado, mesmo este sendo compartilhado. Parece que o servlet não persiste na memória muito tempo, e a cada submissão é carregado novamente criando assim um novo objeto con.
Pra piorar, quando uma nova conexão é criada um novo processo interserver é criado no servidor. Há um limite no numero destes processos que podem rodar simultaneamente, que este caso eh 120. Como a cada submissao uma nova conexao eh criada , um novo processo interserver eh criado tambem, chegando rapidamente no limite. Mesmo se fechar a conexao na página (con.close()) o processo interserver não é liberado imediatamente.
Será que o problema do servlet não persistir eh alguma configuracao no Tomcat ?
Talvez tenha algo errado no modo como você declarou a sua conexão.
Esses dias mesmo criei uma variável de classe static dentro de um servlet e não tive problema nenhum de perdê-la após várias requests.
Meu Tomcat está com a configuração padrão.
Sugiro que você coloque seu código aqui.
Beleza, vou descrever de forma simplificada como está o código :
A variavel con esta declarada dentro da tag de declaração e é inicializada dentro do metodo jspInit(). Ela é inicializada através do método getConnection definido na propria página , que por sua vez usa um método chamado getConnection de um objeto chamado commands.
A página está defina com isThreadSafe = “true” .
Eu testei uma outra coisa agora a pouco. Eu mandei imprimir o valor o objeto con e ele permanece o mesmo entre as varias solicitacoes, o que indica que nao esta sendo criado um novo objeto em cada solicitacao. Mas entao, por quê um novo processo interserver eh criado logo após a submissao da página ? Eu achava que cada interserver estava relacionado com um objeto con instanciado na aplicacao, e não fosse criado um cada vez que a conexao fosse utilizada, que parece ser o que esta acontecendo.