package org.myeslib.example.hazelcast.modules; import com.google.inject.AbstractModule; import com.google.inject.Provides; import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; import lombok.AllArgsConstructor; import org.skife.jdbi.v2.DBI; import javax.inject.Singleton; import javax.sql.DataSource; import java.sql.SQLException; @AllArgsConstructor public class DatabaseModule extends AbstractModule { int dbPoolMinConnections; int dbPoolMaxConnections; @Provides @Singleton public DataSource datasource() throws SQLException { HikariConfig config = new HikariConfig(); config.setPoolName("db-pool-jdbi-example"); config.setDataSourceClassName(System.getenv("DB_DATASOURCE_CLASS_NAME")); config.addDataSourceProperty("URL", System.getenv("DB_URL")); config.addDataSourceProperty("user", System.getenv("DB_USER")); config.addDataSourceProperty("password", System.getenv("DB_PASSWORD")); config.setMinimumPoolSize(dbPoolMinConnections); config.setMaximumPoolSize(dbPoolMaxConnections); config.setConnectionInitSql("select 1 + 1 from dual"); // oracle dialect config.setUseInstrumentation(true); config.setJdbc4ConnectionTest(true); return new HikariDataSource(config); } @Provides @Singleton public DBI dbi(DataSource ds) { return new DBI(ds); } @Override protected void configure() { } }