Qual melhor estratégia para uma operação assíncrona?

Galera estou com um problema que é o seguinte:

Temos uma aplicação “server” que realiza diversos procedimentos e ao final grava um log de auditoria num banco de dados. A única operação realizada no banco é esse log e ele não é prioridade no sistema, visto que temos log de arquivo.

Estamos com problemas de conexão da aplicação com o banco, tudo levar a crer que é um problema de datasource no jboss com o oracle rac, a aplicação perde muito tempo tentando uma conexão(app>datasource:jboss>rac) e esse tempo está implicando em timeout para o client da aplicação, visto que minha aplicação aguarda o resultado da tentativa de insert do log.

Como o banco é apenas para um log de auditoria, ele não é prioritário e decidimos então fazer uma operação assíncrona para gravar esse registro no banco.

O que vocês indicam nessa situação?

Simplesmente criar uma thread manualmente… usar algum framework pra isso ? Criar threads num servidor web não é uma boa prática… mas precisamos de algo assíncrono…

Não queria usar JMS porquê é canhão pra matar formiga.

Rodamos a aplicação em jboss em cluster.

Aonde vc leu isso? Claro que é…desde que feito corretamente kkkkkk
O problema dessa opção é que vc não tem garantia de execução, uma vez que pode gerar erros no procedimento. E se der pau da thread por algum motivo?

Infelizmente chamadas assíncronas são features de aplicações de grande porte…e envio de mensagens como JMS deve ser considerado sim.

Vc prefere fazer um mini container de mensagens na unha usando thread ou habilitar o JMS do JBOSS…
Eu usaria o JBOSS…

Talvez isso te ajude

http://community.jboss.org/wiki/Scheduler

Uma solução simplificada seria utilizar um EJB Stateless Asynchronous que retorna void e faz a inserção do log.
Depois era só injetar tal EJB na parte que gera o log, e esse objeto ficaria encarregado assincronamente de mandar as mensagens do log para o banco.