Also wie ich das sehe, wird im Fehlerfall keine neue Conenction aufgebaut! try/catch fängt ab und setzt die conn auf NULL in der Methode getNewConnection().

Wo ist der Wiederaufbauversuch?