OS: 791698
MENSAGEM DE ERRO: ORA-01013: o usuário solicitou o cancelamento da operação atual
Solução: O erro ocorre porque está dando time out no Jboss ao realizar a consulta. Neste caso ou se restringe a consulta para retornar menos dados, ou pode-se aumentar os parâmetros de time out no Jboss.
Configurando Transaction Timeout do JBoss
Por padrão, o JBoss possui um timeout de transação de 300 segundos (5 min). Isso significa que nenhuma operação que envolva modificações no banco de dados pode durar mais que isso, pois ao se atingir esse limite a transação é automaticamente desfeita (rollback). Isso pode parecer uma limitação, mas na prática trata-se de uma trava de segurança, pois evita que operações travadas (que não vão conseguir finalizar) comprometam o funcionamento de todo o sistema para todos os usuários.
Algumas rotinas do sistema podem demandar um tempo maior de operação, principalmente quando envolve o processamento de uma grande massa de dados, como por exemplo rotinas de contabilização, geração de livros fiscais, processamentos de arquivos externos, etc.
Nestes casos torna-se necessário aumentar esse tempo padrão para um tempo que atenda a necessidade real da aplicação, lembrando sempre que não podemos ter um limite muito alto pelas razões já expostas.
Existem dois pontos que devem ser configurados no servidor de aplicações JBoss:
1º – arquivo <JBOSS_INSTALL>/server/default/conf/jboss-service.xml
trata-se de um arquivo XML, portanto faça as modificações com cuidado para não danificar a estrutura, preferencialmente com NotePad++ ou similares, nunca com Word ou similares. No Linux uma boa opção é o VI.
Procure no arquivo pelo termo ‘TransactionTimeout’ (sem as aspas), ele vai aparecer em um trecho semelhante ao fragmento abaixo:
Substitua o valor do atributo e salve o arquivo.
2º arquivo <JBOSS_INSTALL>/bin/run.sh (ou run.bat no Windows>
Trata-se um arquivo de inicialização do JBoss, e nele devemos definir um timeout de aplicação, que neste caso é configurado em milissegundos (ou seja, 60000 é 1 minuto).
Procure pelo atributo -Djape.session.timeout
Se encontrar, mude-o para um valor que seja igual ou menor que o timeout de transação definido no primeiro arquivo. Ou seja, se o timeout de transação ficou como 600 (10 minutos) então o valor aqui será 600000 (10 * 60000).
Se o atributo não for encontrado então devemos adicioná-lo no arquivo. Para isso, procure pelo termo
‘set JAVA_OPTS=’ (sem as aspas) quando Windows ou ‘JAVA_OPTS=’ (sem aspas) quando Linux. Adicione o atributo no final do comando (no Linux, coloque o atributo dentro das aspas duplas que envolvem o comando).
Exemplo para run.bat (Windows):
set JAVA_OPTS=%JAVA_OPTS% -Djape.session.timeout=600000
Exemplo para run.sh (Linux)
JAVA_OPTS=”$JAVA_OPTS -Djape.session.timeout=600000″
Para o Linux devemos verificar também o arquivo run.conf (que fica na mesma pasta do run.sh). Caso o atributo
-Djape.session.timeout seja encontrado nele então devemos modificar o valor, caso contrário deixe o arquivo inalterado.
Para se certificar que o novo timeout está valendo, vá na tela “Administração do Servidor” do Sankhya-W, aba Geral, e procure por Argumentos da VM:, o atributo jape.session.timeout deve estar presente com o valor que você definiu. Caso contrário, reveja os passos anteriores.
Após realizar os procedimentos acima, REINICIAR O JBOSS!
Mais informações sobre como definir atributos de inicialização do JBoss em
Fonte: Sankhya Code
Nenhum comentário:
Postar um comentário