Search code examples
javadropwizardjdbi

Check for connections and eventually reconnect using dropwizard 0.9.2 and JDBI


I'm using Drowizard 0.9.2 with JDBI to connect to my MySql Server. Now it could happen that my MySql Database is not active if my app starts due to async deployments. I then want my App to loop and check each 5 secs or so whether it can reach the database.

How is that possible with the framework mentioned above?


Solution

  • Just fyi, I've found a solution that works for me.

    This method checks for a connection. If it returns false, I'll enter a synchronous loop that checks (and also establish a connection) when possible..

    public boolean checkForConnection() {
    Handle handle = null;
    try {
      jdbi = factory.build(environment, config.getDatabaseFactory(), "postgresql");
       handle = jdbi.open();
    } catch (Exception e) {
      LOGGER.error("Error while checking Postgres connection.");
      return false;
    } finally {
      try {
        if(handle != null){
          handle.close();
        }
      } catch (Exception e){
        LOGGER.error("Error trying to close connection");
        return false;
      }
    }
    return true;
    }
    

    Unfortunately, I can't use ConnectionFactory as it is a private member of DBI.