Me deparei com este erro no Linux. O erro era de configuração do SO e não da aplicação ou algo da JVM.
O Linux tem uma configuração padrão de quantidade de arquivos abertos (Open files ou File descriptors). É importante observar que conexões TCP são contadas como arquivos abertos.
Para monitorar a quantidade de arquivos abertos para um determinado processo use o comando:
lsof -p [no. do processo] | wc -l
Para ver quais são os arquivos use apenas:
lsof -p [no. do processo]
Para verificar a quantidade máxima configurada, use o comando:
ulimit -n
O valor retornado será a quantidade configurada. O default é 1024. Para alterar este valor use o comando:
ulimit -n [qtd máxima desejada]
O novo valor passara a vigorar imediatamente, porém caso a máquina seja reiniciada o valor padrão(1024) voltara. Para alterar este valor definitivamente, acrescente a linha abaixo ao arquivo /etc/security/limits.conf :
- nofile [qtd máxima desejada]
PS. Antes de aumentar esses valores verifique se esta fechando corretamente os recursos utilizados pela aplicação.
quinta-feira, 13 de setembro de 2007
java.net.SocketException: Too many open files
Postado por
Gustavo
às
12:43
0
comentários
"java.net.BindException: Address already in use" e "java.rmi.server.ExportException: Port already in use:"
Esse é um problema bem simples que acontece muito quando você roda o JBoss no Windows.
O que acontece é que o Windows usa portas aleatórias para alguns serviços, e as vezes acontece de ele "pegar" uma porta que o JBoss usa para algum serviço.
Para resolver este problema você tem que finalizar o processo do Windows que está utilizando essa porta ou então reiniciar a máquina. São as únicas maneiras que conheço para resolver esse problema. Para identificar o processo que está utilizando as portas do JBoss gosto de usar um programinha chamado ActivePorts, ele é freeware.
Postado por
Gustavo
às
07:12
0
comentários
com.ibm.mq.MQException: MQJE001: Completion Code 1, Reason 2003
Este erro ocorre porque as logs do MQ atingem seu tamanho limite.
Isto pode ocorrer porque o tempo de transação da sua aplicação está muito grande, ou porque o tamanho da log realmente está pequeno.
Normalmente é o segundo caso. Então para resolver basta aumentar o tamanho da log do MQ.
Está configuração é feita direto na aplicação Websphere MQ.
Como funciona a transação no JBoss?
Se você está usando o JBoss para consumir mensagens de um servidor MQ, e está fazendo isso utilizando o StdJMSPool, o funcionamento é o seguinte:
Toda vez que uma mensagem chega no MQ, o JBoss "pega" uma sessão já aberta com o MQ e inicia a transação, após o termino do processamento a transação é finalizada. Desta forma podemos entender que o tempo de transação é o tempo de execução do método onMessage() do seu MDB.
Postado por
Gustavo
às
06:31
0
comentários
Marcadores: Erros, JBoss, Websphere MQ
quinta-feira, 6 de setembro de 2007
Bem vindo!!!
Neste meu primeiro post, gostaria de listar alguns assuntos que andei estudando bastante ultimamente, e que na medida do possível pretendo escrever sobre eles, são:
- Solução de erros (Exceptions) diversos;
- Integração JBoss - Websphere MQ;
- Criptografia;
- Logins personalizados no JBoss;
- Login com certificado digital/token no JBoss;
- Configuração e utilização de MDB 2.1 no JBoss;
- Construção de conector JCA notx;
- Configuração de MDB 3.0, ou EJB3, no JBoss;
- Utilização de timers (schedulers) no JBoss;
- Ajax com Struts;
Bom, por enquanto lembrei desses, se tiver mais depois adiciono.
Enquanto os posts sobre esses assuntos não forem escritos, sintam-se a vontade para enviar dúvidas ou sugestões sobre esses tópicos.
Postado por
Gustavo
às
20:00
0
comentários
Marcadores: Geral