diff --git a/server/src/main/java/keywhiz/ServiceModule.java b/server/src/main/java/keywhiz/ServiceModule.java index dc56dafd1..21a356ef2 100644 --- a/server/src/main/java/keywhiz/ServiceModule.java +++ b/server/src/main/java/keywhiz/ServiceModule.java @@ -122,8 +122,11 @@ public ServiceModule(KeywhizConfig config, Environment environment) { @Provides @Singleton @Readonly ManagedDataSource readonlyDataSource(Environment environment, KeywhizConfig config) { - DataSourceFactory dataSourceFactory = config.getDataSourceFactory(); - return dataSourceFactory.build(environment.metrics(), "postgres-readonly"); + DataSourceFactory dataSourceFactory = config.getReadonlyDataSourceFactory(); + ManagedDataSource dataSource = dataSourceFactory.build(environment.metrics(), "postgres-readonly"); + environment.lifecycle().manage(dataSource); + + return dataSource; } // jOOQ @@ -182,12 +185,16 @@ public ServiceModule(KeywhizConfig config, Environment environment) { } @Provides @Singleton - @Readonly DBI readonlyDbi(DBIFactory factory, Environment environment, KeywhizConfig config, - MapArgumentFactory mapArgumentFactory, @Readonly ManagedDataSource dataSource) + @Readonly DBI readonlyDbi(KeywhizConfig config, MapArgumentFactory mapArgumentFactory, + @Readonly ManagedDataSource dataSource) throws ClassNotFoundException { logger.debug("Creating read-only DBI"); - DBI dbi = factory.build(environment, config.getReadonlyDataSourceFactory(), dataSource, - "postgres-readonly"); + final DBI dbi = new DBI(dataSource); + dbi.registerArgumentFactory(new OptionalArgumentFactory(config.getReadonlyDataSourceFactory().getDriverClass())); + dbi.registerContainerFactory(new OptionalContainerFactory()); + dbi.registerArgumentFactory(new LocalDateTimeArgumentFactory()); + dbi.registerMapper(new LocalDateTimeMapper()); + dbi.registerArgumentFactory(mapArgumentFactory); return dbi; }