TOMCAT desestabilizado?

12 respostas
EduFranzoni

Boa tarde,
acredito que o tomcat esteja desestabilizado, pois frequentemente acontece de o usuário deslogar da aplicação no meio de uma inserção de arquivos, por exemplo.
ou quando a exibição da tabela puxa uma grande quantidade de informações.
ouvi algo a respeito de pool de conexões.

alguem pod me da uma luz? do que fazer?

obrigado desde já.

12 Respostas

rock

Tenta olhar no log do tomcat para ver as exceções que ocorreram e trate todas…

Conexões com o banco abertas e ou poucas conexoes podem derrubar a aplicação sim.
Se vc tem muitos processos esperando a conexao com o banco, eles vao se acumulando e ocupando cada vez mais memoria do servidor , até derrubar…

Há alguns softwares para fazer o monitoramento, como o jconsole, probe, rhq,…

sobre o pool de conexoes podes tentar utilizar o proxool http://proxool.sourceforge.net/ ou o c3p0.

:roll:

FernandoFranzini

É claro que não!!!
Não culpe o container por bugs da sua aplicação.
kkkkkkkkkkkkkkkkkk

Use o depurador…

EduFranzoni

rsrs. não sei nem o que é container.

Sou iniciante, e fui postando o que veio na cabeça por ser o possivel problema.

o erro só acontece em produção. localmente não acontece.

acredito que possa ser varias conexões abertas na hora de efetuar a consulta. e depois nao fecha-las.

não fui eu quem fiz, cheguei depois de estar feito.

valeu a todos. vou tentar ver hoje o que acontece. e posto aqui novamente

FernandoFranzini

Sou iniciante, e fui postando o que veio na cabeça por ser o possivel problema.

o erro só acontece em produção. localmente não acontece.


Normal amigo…ambiente de desenvolvimento sempre funciona né…kkkk
Ambiente de produção é outra historia…

Sou iniciante, e fui postando o que veio na cabeça por ser o possivel problema.

Então me desculpa mas vc ta equivocado…não é problema de tomcat não…uso tomcat ha 10 anos…e minha ultima aplicação roda com 10 cliente habilitados…a coisa funciona linda e maravilhosamente bem…

não fui eu quem fiz, cheguei depois de estar feito.
valeu a todos. vou tentar ver hoje o que acontece. e posto aqui novamente

Complicado amigo…não sei como vc vai dar manutenção em algo que vc não tem condições…aconselho vc a contratar uma consultoria mais perto de vc.

EduFranzoni

a única coisa que restou, acho que os métodos de consulta ao banco estão com erro, repare nesse:

public String GetFile(int idDocumento, String ip)  
        {  
            conexao.AbreConexao();  
      
            String file = "";  
      
            try  
            {  
                String query = "SELECT nomeDocumento FROM tabelaDocumento WHERE idDocumento = " + idDocumento;  
      
                rs = conexao.stmt.executeQuery(query);  
      
                if(rs.next())  
                {  
                    file = rs.getString(1);  
                }  
            }  
            catch(Exception e)  
            {  
               //tratamento  
            }  
      
              
            return file;  
        }

repare que nao fecha a conexão. somente abre.

Acredito que seja isso, estou certo/?

FernandoFranzini

Sim…é um bug classico de iniciantes…
Mas veja q é pool…vc não abre conexão…vc RESERVA!
Depois tem LIBERAR.

EduFranzoni

imaginei mesmo.

como assim, liberar? sou chato neh? hahaha.

EduFranzoni

mas acho que a aplicação não está utilizando pool não.

FernandoFranzini

EduFranzoni:
imaginei mesmo.

como assim, liberar? sou chato neh? hahaha.

Veja o método que abre conexão…
Ta abrindo ou consumindo de um Pool?

EduFranzoni
public void AbreConexao()
    {
	try
	{
            Class.forName("net.sourceforge.jtds.jdbc.Driver");
	}
	catch (Exception e)
	{
            e.printStackTrace();
	}

	try
        {
            /*** CONEXAO DATABASE ***/
            con = DriverManager.getConnection("jdbc:jtds:sqlserver://" + ReadXML.pathDatabase + "/" + ReadXML.nomeDatabase, ReadXML.userDatabase, ReadXML.passDatabase);
            stmt = this.con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
            
        }
        catch(SQLException e)
        {
            System.err.println("SQLException: " + e.getMessage());
        }
    }

abrindo?

FernandoFranzini

Sim…
2 coisas erradas:

  1. ta abrindo na unha
  2. e não esta fechando.
    É impossível colocar uma aplicação em produção assim meu querido…
    Um SGDB tem um limite X de conexões simultâneas…uma hora abre a as pernas…
EduFranzoni

Certo. vou editar e fechar todas as conexões. que são abertas, nos métodos de consulta ao bd. como por exemplo o que eu postei aqui.

depois vou aprender pool direitinho e aplicar!

obrigado pela ajuda meu velho. obg msmo!

Criado 22 de setembro de 2011
Ultima resposta 23 de set. de 2011
Respostas 12
Participantes 3