Qual o erro?  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
Jedi_FeniX
Virtual Machine Man
[Avatar]

Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline

Depois de ocorrerem várias exceptions como esta:



Recebi este erro:



Isso ocorreu por causa das exceptions?

www.bau-de-dev.com
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Se o null pointer ocorreu devido a estourar o número de conexões com o banco pode até ser. Sem ter o stack trace dessas null pointer exceptions fica difícil adivinhar.
[WWW]
Jedi_FeniX
Virtual Machine Man
[Avatar]

Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline

No catalina.out só tem isso mesmo, eu acho que não foi nada em relação ao banco não, porque a conexão eu faço com JDBC puro, então, eu abro e fecho as conexões se não conseguir abrir espero e tento novamente, e outros máquinas com a mesma aplicação também usam o mesmo banco.

www.bau-de-dev.com
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Jedi_FeniX wrote:eu acho que não foi nada em relação ao banco não, porque a conexão eu faço com JDBC puro, então, eu abro e fecho as conexões se não conseguir abrir espero e tento novamente


Aham... o problema, obviamente, não é abrir a conexão, e sim fechar. Você fecha tudo direitinho? Usa finally?


[WWW]
Jedi_FeniX
Virtual Machine Man
[Avatar]

Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline

Sim, quando o problema era conexão, acabava dando problema nas três máquinas que usavam o banco de dados.
Eu faço requisições sockets será que o problema é isso?
Achei no log que teve várias requisições que receberam "null" como resposta do servidor, será que pode ter sido isso?
Quando é gerada várias exceptions deste tipo o heap da jvm pode ser "consumido"? E com isso gerar falta de memória?

www.bau-de-dev.com
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Jedi_FeniX wrote:
Eu faço requisições sockets será que o problema é isso?


Se você usar ObjectInputStream / ObjectOutputStream, por exemplo, você pode ter problemas sérios de "vazamento de memória". Você usa alguma dessas coisas sem usar também o método "reset" ?


[WWW]
Jedi_FeniX
Virtual Machine Man
[Avatar]

Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline

Eu uso o "OutputStreamWriter" e o "InputStreamReader".

No meu código a parte que usa estes dois objestos está assim:


www.bau-de-dev.com
klayrocha
Thread.start()
[Avatar]

Membro desde: 06/04/2009 08:06:39
Mensagens: 42
Offline

Could not reserve enough space for object heap
Isso é falta de memória !
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

De qualquer maneira, usar sockets é sempre meio complicado, porque os dois lados (cliente e servidor) devem ser cuidadosamente escritos de modo que não fiquem "sockets pendurados" (isso você pode constatar com o netstat).

Pode ser que você precise revisar sua aplicação que usa sockets para usar "TCP No Delay" (setTcpNoDelay), e também "Shutdown" (shutdownOutput, shutdownInput). Você precisa achar um fonte de uma aplicação que use isso direito para poder ver como é que isso é feito.

This message was edited 1 time. Last update was at 06/04/2009 13:14:30

[WWW]
Jedi_FeniX
Virtual Machine Man
[Avatar]

Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline

A configuração do tomcat está assim:



Falta de memória eu sei que foi mas queria tentar entender o porque.

www.bau-de-dev.com
Jedi_FeniX
Virtual Machine Man
[Avatar]

Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline

Mesmo matando a conexão do socket a conexão fica presa? E eu estou fazendo requisições socket para um servidor apache.

www.bau-de-dev.com
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Jedi_FeniX wrote:Mesmo matando a conexão do socket a conexão fica presa? E eu estou fazendo requisições socket para um servidor apache.


Então... depende. Você precisa ver se está chamando os "shutdownInput/shutdownOutput" adequadamente.

Para chamar um servidor Apache, normalmente (para evitar essas problemáticas de sockets) costuma-se usar uma URLConnection mesmo, que já usa o protocolo http ou https, dependendo de como você fez a configuração da URL.


[WWW]
Jedi_FeniX
Virtual Machine Man
[Avatar]

Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline

Eu chamo o método close, dos dois objetos, para fechar a conexão.
E em relação a requisição é um HTTP GET normal.

www.bau-de-dev.com
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team