Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle Slick创建一个新会话并保持其打开状态_Oracle_Scala_Session_Akka_Slick - Fatal编程技术网

Oracle Slick创建一个新会话并保持其打开状态

Oracle Slick创建一个新会话并保持其打开状态,oracle,scala,session,akka,slick,Oracle,Scala,Session,Akka,Slick,我的scala应用程序与Oracle数据库一起工作,Oracle数据库具有活动会话的限制。 我通过Typesafe Slick将AKKA actors用于Oracle DB的并发任务 这是演员工作的例子: def marketPlaceDataRefresh[T](targetArea:String, customerId:String, wave:String) = clientPool.withClient(targetArea.toUpperCase) { implic

我的scala应用程序与Oracle数据库一起工作,Oracle数据库具有活动会话的限制。 我通过Typesafe Slick将AKKA actors用于Oracle DB的并发任务

这是演员工作的例子:

def marketPlaceDataRefresh[T](targetArea:String, customerId:String, wave:String) =    
  clientPool.withClient(targetArea.toUpperCase) {
    implicit session =>
      sql"""BEGIN MARKETPLACE_PKG.INIT_DATA_REFRESH($customerId,$wave,$wave,$wave); COMMIT; END;""".as[Int].firstOption
  }
每次AKKA参与者调用def marketPlaceDataRefresh时隐式会话打开和关闭

我只知道并发性和Slick的基本知识


如何创建单个会话并使其对所有并发任务保持打开状态?

会话不应长时间保持打开状态。也就是说,您始终可以手动处理会话。从中,您可以使用以下方式打开会话:

val session : Session = db.createSession
...run the queries normally...
session.close // close the session

然而,我永远不会使用像那样危险的东西。迟早会有一个bug,会话将退出(即,您将忘记关闭它),从而使数据库停止

我对这个问题没有答案,只是考虑一下,我认为你不应该这样做,会话被打开,使用,然后返回到db会话池,这是一种快速而安全的机制,如果你在参与者中打开了一个会话,可能没有使用,会发生什么?如果参与者崩溃并且会话未正确关闭,甚至是最糟糕的情况?