Tenho uma aplicação utilizando struts 1.3, um servidor tomcat 5.5 e estou utilizando java 5 update 11.
Estou enfrentando o seguinte problema:
Para acesso a minha aplicação existe um proxy reverso, por motivos de regras de segurança… pois bem
1- Atualmente temos alguns gargalos em algumas consultas que a equipe de DBAs estão resolvendo…
2- Nesse proxy reverso temos um timeout, por motivos de segurança é de 5 min… e pronto
Apos os 5 min o proxy finaliza a conexão com minha aplicação, e exibe sua tela padrão de erro
502 BAD GATEWAY
Ao exibir esta msg minha aplicação nem sabe disso ela faz o dela mas quando temina seu processo
o proxy ja finalizou a conexão a ela…
3- No meio esta minha aplicação, e meu problema como finalizar qualquer processo que ela esteja fazendo dentro de um tempo limite, no qual eu determinho menor do que o timeout do proxy, exibindo uma msg agradavel para meu usuário, “SUA CONSULTA EXCEDEU O TEMPO LIMITE DE NOSSO SERVIDOR”
Nessa empreitada eu implementei um controle de transação javax.transaction.UserTransaction
UserTransaction utx = null;
try {
Context ic = new InitialContext();
utx = (UserTransaction) ic.lookup("java:comp/UserTransaction");
utx.setTransactionTimeout(4000); // definido para 4 minutos
utx.begin();
//MEU PROCESSO
utx.commit();
}catch (Exception e) {
utx.rollback();
e.printStackTrace();
}
Este controle funciona em parte, pois bem:
Ele funciona mas aguarda a execução do processo,
e so na finalização deste processo que ele gera exceção do timeout definido na aplicação
No caso processo demorar 6 min, o msg de erro do proxy já foi ativada em 5 min, de nada mais adianta controle algum.
PERGUNTA:
É possível implementar algo para contornar esse timeout do proxy reverso na minha aplicação java, finalizando um processo em um tempo menor que o timeout do proxy?
Grato em quem puder ajudar!
