Eu encontrei o problema… eu estava mantendo a sessao do hibernate para todos os usuários… e quando ocorria um commit da transação a conexão dentro da sessao do hibernate era removida… o que ocasionada o problema nas demais chamadas…
Com certeza vc pode estar tentando acessar uma conexao que nao exista mais para uso dentro do pool…
Com certeza o controle transacional deve estar matando a sua conexão no momento do commit. Acho melhor dar uma olhada no controle transacional seu… pode ser que tenha algo que seja a raiz do problema.
No meu caso demorei para achar o problema, pois ele é bem sutil.
Depois de perder 6 horas nesse problema, eu resolví.
Eu definí o método processar() do meu EJB Session como uma operação que requer transação. Dentro desse método eu chamo outro método que cria o registro no BD e que requer uma nova transação. E pronto! Resolvido.
Exemplo:
[code]public class MeuSessionBean implements SessionBean {
/**
* @ejb.interface-method view-type=“remote”
* @ejb.transaction type = “Required”
*/
public void processar( Map parametros ) throws GPAException {
registrarNovoProcessamento();
// aqui faz outras coisas
}
/**
* @ejb.transaction type = "RequiresNew"
*/
public ProcessoAssincrono registrarNovoProcessamento() {
}