[Play 2.4.0-RC2] HikariCP

1,080 views
Skip to first unread message

Anders Abrahamsen

unread,
May 8, 2015, 10:28:51 AM5/8/15
to play-fr...@googlegroups.com

I've gotten around to try out play 2.4 and finally the scala integration in IntelliJ works. Thumbs up :)

But I have one issue, when Trying to set up a database connection I get into issues with the configuration. I have made one simple database connection:

ebean.default = ["models.*"]

db {
default {
dataSourceClassName = "org.postgresql.ds.PGSimpleDataSource"
dataSource {
user = "response"
password = "response"
databaseName = "response"
serverName = "localhost"
serverPort = 5434
}
}
}

And I try to start the server, but run into this error, any suggestions to what I am doing wrong?

CreationException: Unable to create injector, see the following errors:

1) Error in custom provider, Configuration error: Configuration error[Cannot connect to database [default]]
  while locating play.api.db.DBApiProvider
  while locating play.api.db.DBApi
    for field at play.api.db.NamedDatabaseProvider.dbApi(DBModule.scala:80)
  while locating play.api.db.NamedDatabaseProvider
  at com.google.inject.util.Providers$GuicifiedProviderWithDependencies.initialize(Providers.java:149)
  at play.api.db.DBModule$$anonfun$namedDatabaseBindings$1.apply(DBModule.scala:34):
Binding(interface play.api.db.Database qualified with QualifierInstance(@play.db.NamedDatabase(value=default)) to ProviderTarget(play.api.db.NamedDatabaseProvider@5a33d08c)) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1)
Caused by: Configuration error: Configuration error[Cannot connect to database [default]]
	at play.api.Configuration$.configError(Configuration.scala:178)
	at play.api.Configuration.reportError(Configuration.scala:829)
	at play.api.db.DefaultDBApi$$anonfun$connect$1.apply(DBApi.scala:74)
	at play.api.db.DefaultDBApi$$anonfun$connect$1.apply(DBApi.scala:68)
	at scala.collection.immutable.List.foreach(List.scala:381)
	at play.api.db.DefaultDBApi.connect(DBApi.scala:68)
	at play.api.db.DBApiProvider.get$lzycompute(DBModule.scala:72)
	at play.api.db.DBApiProvider.get(DBModule.scala:62)
	at play.api.db.DBApiProvider.get(DBModule.scala:58)
	at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81)
	at com.google.inject.internal.BoundProviderFactory.provision(BoundProviderFactory.java:72)
	at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61)
	at com.google.inject.internal.BoundProviderFactory.get(BoundProviderFactory.java:62)
	at com.google.inject.internal.SingleFieldInjector.inject(SingleFieldInjector.java:54)
	at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:132)
	at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:93)
	at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:80)
	at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103)
	at com.google.inject.internal.MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:80)
	at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:62)
	at com.google.inject.internal.InjectorImpl.injectMembers(InjectorImpl.java:984)
	at com.google.inject.util.Providers$GuicifiedProviderWithDependencies.initialize(Providers.java:149)
	at com.google.inject.util.Providers$GuicifiedProviderWithDependencies$$FastClassByGuice$$2a7177aa.invoke(<generated>)
	at com.google.inject.internal.cglib.reflect.$FastMethod.invoke(FastMethod.java:53)
	at com.google.inject.internal.SingleMethodInjector$1.invoke(SingleMethodInjector.java:57)
	at com.google.inject.internal.SingleMethodInjector.inject(SingleMethodInjector.java:91)
	at com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:132)
	at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:93)
	at com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:80)
	at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
	at com.google.inject.internal.MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:80)
	at com.google.inject.internal.Initializer$InjectableReference.get(Initializer.java:174)
	at com.google.inject.internal.Initializer.injectAll(Initializer.java:108)
	at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:174)
	at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110)
	at com.google.inject.Guice.createInjector(Guice.java:96)
	at com.google.inject.Guice.createInjector(Guice.java:73)
	at com.google.inject.Guice.createInjector(Guice.java:62)
	at play.api.inject.guice.GuiceBuilder.injector(GuiceInjectorBuilder.scala:126)
	at play.api.inject.guice.GuiceApplicationBuilder.build(GuiceApplicationBuilder.scala:93)
	at play.api.inject.guice.GuiceApplicationLoader.load(GuiceApplicationLoader.scala:21)
	at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1$$anonfun$2.apply(DevServerStart.scala:153)
	at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1$$anonfun$2.apply(DevServerStart.scala:150)
	at play.utils.Threads$.withContextClassLoader(Threads.scala:21)
	at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(DevServerStart.scala:150)
	at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(DevServerStart.scala:121)
	at scala.Option.map(Option.scala:146)
	at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(DevServerStart.scala:121)
	at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(DevServerStart.scala:119)
	at scala.util.Success.flatMap(Try.scala:230)
	at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(DevServerStart.scala:119)
	at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(DevServerStart.scala:111)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402)
	at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
	at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
	at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1689)
	at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Caused by: Configuration error: Configuration error[one of either dataSource or dataSourceClassName must be specified]
	at play.api.Configuration$.configError(Configuration.scala:178)
	at play.api.PlayConfig.reportError(Configuration.scala:1048)
	at play.api.db.HikariCPConnectionPool.create(HikariCPModule.scala:70)
	at play.api.db.PooledDatabase.createDataSource(Database.scala:276)
	at play.api.db.DefaultDatabase.dataSource$lzycompute(Database.scala:201)
	at play.api.db.DefaultDatabase.dataSource(Database.scala:199)
	at play.api.db.DefaultDatabase.getConnection(Database.scala:220)
	at play.api.db.DefaultDatabase.getConnection(Database.scala:216)
	at play.api.db.DefaultDBApi$$anonfun$connect$1.apply(DBApi.scala:70)
	... 56 more
Caused by: java.lang.IllegalArgumentException: one of either dataSource or dataSourceClassName must be specified
	at com.zaxxer.hikari.AbstractHikariConfig.validate(AbstractHikariConfig.java:779)
	at play.api.db.HikariCPConfig.toHikariConfig(HikariCPModule.scala:140)
	at play.api.db.HikariCPConnectionPool$$anonfun$1.apply(HikariCPModule.scala:57)
	at play.api.db.HikariCPConnectionPool$$anonfun$1.apply(HikariCPModule.scala:54)
	at scala.util.Try$.apply(Try.scala:191)
	at play.api.db.HikariCPConnectionPool.create(HikariCPModule.scala:54)
	... 62 more

Anders Abrahamsen

unread,
May 8, 2015, 10:50:34 AM5/8/15
to play-fr...@googlegroups.com
It seems to work with the old syntax we used before moving to "com.edulify" %% "play-hikaricp",is that the intention?

db.default.driver=org.postgresql.Driver
db.default.url="jdbc:postgresql://localhost:5434/response"
db.default.user=response
db.default.password=response

Matthias Kurz

unread,
Jun 16, 2015, 9:49:37 AM6/16/15
to play-fr...@googlegroups.com
You have to use db.default.hikaricp.*

db {
default {
    hikaricp {
  dataSourceClassName = "org.postgresql.ds.PGSimpleDataSource"
      dataSource {
        user = "response"
        password = "response"
        databaseName = "response"
        serverName = "localhost"
        serverPort = 5434
      }
    }
  }
}


Regards,
Matthias

vam...@thrymr.net

unread,
Jun 19, 2015, 8:42:51 AM6/19/15
to play-fr...@googlegroups.com
modify your build.sbt file ....




name := """play-5"""

version := "1.0-SNAPSHOT"
lazy val root = (project in file(".")).enablePlugins(PlayJava)
lazy val myProject = (project in file(".")).enablePlugins(PlayJava, PlayEbean)
scalaVersion := "2.11.6"

libraryDependencies ++= Seq(
  
  javaJdbc,
  cache,
  javaWs
)
libraryDependencies += "org.postgresql" % "postgresql" % "9.3-1100-jdbc41"

// Play provides two styles of routers, one expects its actions to be injected, the
// other, legacy style, accesses its actions statically.
routesGenerator := InjectedRoutesGenerator
fork in run := true

vam...@thrymr.net

unread,
Jun 19, 2015, 8:44:27 AM6/19/15
to play-fr...@googlegroups.com
simply you need to add two lines in build file,its works fine

libraryDependencies += "org.postgresql" % "postgresql" % "9.3-1100-jdbc41"
Reply all
Reply to author
Forward
0 new messages