я работаю над этим вопросом довольно долгого время, и теперь я не могу найти решение ...Play 2.1 Scala SQLException Время ожидание подключения истекло время ожидания свободного доступного соединения
веба-приложение, построенное с каркасом игры 2.2. 1, используя h2 db (для dev) и простой пакет модели. Я пытаюсь реализовать конечную точку REST JSON, и код работает ... но только один раз на экземпляр сервера.
def createOtherModel() = Action(parse.json) {
request =>
request.body \ "name" match {
case _: JsUndefined => BadRequest(Json.obj("error" -> true,
"message" -> "Could not match name =(")).as("application/json")
case name: JsValue =>
request.body \ "value" match {
case _: JsUndefined => BadRequest(Json.obj("error" -> true,
"message" -> "Could not match value =(")).as("application/json")
case value: JsValue =>
// this breaks the secod time
val session = ThinkingSession.dummy
val json = Json.obj(
"content" -> value,
"thinkingSession" -> session.id,
)
)
Ok(Json.obj("content" -> json)).as("application/json")
}
} else {
BadRequest(Json.obj("error" -> true,
"message" -> "Name was not content =(")).as("application/json")
}
}
}
так что в основном я читал JSON, эхо значение «значение», создавал модель obj и отправлял ее id.
функция ThinkingSession.dummy
делает это:
def all(): List[ThinkingSession] = {
// Tried explicitly closing connection, no difference
//val conn = DB.getConnection()
//try {
// DB.withConnection { implicit conn =>
// SQL("select * from thinking_session").as(ThinkingSession.DBParser *)
// }
//} finally {
// conn.close()
//}
DB.withConnection { implicit conn =>
SQL("select * from thinking_session").as(ThinkingSession.DBParser *)
}
}
def dummy: ThinkingSession = {
(all() head)
}
Так что это должно сделать SELECT * FROM thinking_session
, создать список модель OBJ из результата и вернуть первый из списка.
Это прекрасно работает в первый раз после запуска сервера, но второй раз я получаю
play.api.Application$$anon$1: Execution exception[[SQLException: Timed out waiting for a free available connection.]]
at play.api.Application$class.handleError(Application.scala:293) ~[play_2.10.jar:2.2.1]
at play.api.DefaultApplication.handleError(Application.scala:399) [play_2.10.jar:2.2.1]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$2$$anonfun$applyOrElse$3.apply(PlayDefaultUpstreamHandler.scala:261) [play_2.10.jar:2.2.1]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$2$$anonfun$applyOrElse$3.apply(PlayDefaultUpstreamHandler.scala:261) [play_2.10.jar:2.2.1]
at scala.Option.map(Option.scala:145) [scala-library.jar:na]
at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$2.applyOrElse(PlayDefaultUpstreamHandler.scala:261) [play_2.10.jar:2.2.1]
Caused by: java.sql.SQLException: Timed out waiting for a free available connection.
at com.jolbox.bonecp.DefaultConnectionStrategy.getConnectionInternal(DefaultConnectionStrategy.java:88) ~[bonecp.jar:na]
at com.jolbox.bonecp.AbstractConnectionStrategy.getConnection(AbstractConnectionStrategy.java:90) ~[bonecp.jar:na]
at com.jolbox.bonecp.BoneCP.getConnection(BoneCP.java:553) ~[bonecp.jar:na]
at com.jolbox.bonecp.BoneCPDataSource.getConnection(BoneCPDataSource.java:131) ~[bonecp.jar:na]
at play.api.db.DBApi$class.getConnection(DB.scala:67) ~[play-jdbc_2.10.jar:2.2.1]
at play.api.db.BoneCPApi.getConnection(DB.scala:276) ~[play-jdbc_2.10.jar:2.2.1]
Мой application.conf (дб раздел)
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:file:database/[my_db]"
db.default.logStatements=true
db.default.idleConnectionTestPeriod=5 minutes
db.default.connectionTestStatement="SELECT 1"
db.default.maxConnectionAge=0
db.default.connectionTimeout=10000
Первоначально единственным установить в моей конфигурации было соединение и произошла ошибка. Я добавил все остальное, прочитав эту проблему в Интернете.
Интересно, что, когда я использую h2 в памяти db, он работает один раз после запуска сервера и после этого он терпит неудачу. когда я использую файловую систему h2, она работает только один раз, независимо от экземпляров сервера.
Может ли кто-нибудь дать мне некоторое представление по этому вопросу? Обнаружил некоторые вещи по проблеме bonecp и попытался обновление до 0.8.0-rc1, но ничего не изменилось ... Я в растерянности = (
Hi NemoOudeis. можете ли вы рассказать мне, как вы решили проблему. Даже я столкнулся с той же проблемой – Incpetor
, разместив комментарий в качестве ответа и приняв его ??? – vumaasha