Connection#isOpen tells you whether a successful invocation to Connection#open was made.
It doesn't tell you about the current state of the connection.
In your case, it sounds like the LDAP or some network device is tearing down the connection after some timeout.
By default a reopen exception handler is configured to reopen the connection in this sort of circumstance.
If you configure a BindConnectionInitializer you should see your connections reestablish and bind correctly.
Another alternative is to use pooling and configure your pool to validate connections in order to keep them alive.
Lastly, you could investigate the client and server keep-alive settings.
Sometimes a simple tweak to your TCP config can solve this issue.