Contribuição Marcos Esplugues
A conexão de fato não existirá mais desde que o application server esteja desligado; quem estaria ligado então? Só faltaria desligar a máquina e a conexão continuar… onde estará o problema.
Realmente não tem nada a ver com a aplicação. O Oracle mantém as sessões porque ele não sabe que o client caiu. Há um parâmetro que pode ser configurado no arquivo sqlnet.ora que faz com que o Oracle, de tempos em tempos, verifique se o cliente está vivo. É o sqlnet_expire_time, configurado em segundos. Um valor muto baixo pode causar excesso de tráfego de rede. Um valor muito alto pode não ter serventia. A Oracle recomenda colocar 10 segundos neste parâmetro:
SQLNET.EXPIRE_TIME=10
É importante que isso não seja passado como uma recomendação ao cliente, mas como uma sugestão ao DBA do ambiente.