Browse Source

Merge pull request #208 from Skamander/mongo-config

Changed the db config. It's possible ...
Patrick Falls 12 years ago
parent
commit
e165c8fea3

+ 20 - 3
play-scala-mongodb/app/controllers/Application.scala

@@ -4,15 +4,32 @@ import play.api.Play.current
 import play.api.mvc._
 import play.api.mvc._
 import play.api.libs.json._
 import play.api.libs.json._
 import scala.concurrent.forkjoin.ThreadLocalRandom
 import scala.concurrent.forkjoin.ThreadLocalRandom
-import scala.concurrent.Future
+import scala.concurrent.{Future, ExecutionContext}
+import scala.collection.convert.WrapAsScala.collectionAsScalaIterable
 import play.modules.reactivemongo.ReactiveMongoPlugin
 import play.modules.reactivemongo.ReactiveMongoPlugin
 import play.modules.reactivemongo.json.collection.JSONCollection
 import play.modules.reactivemongo.json.collection.JSONCollection
 import play.api.libs.concurrent.Execution.Implicits._
 import play.api.libs.concurrent.Execution.Implicits._
+import play.api.libs.concurrent.Akka
 
 
 object Application extends Controller {
 object Application extends Controller {
 
 
   private val TestDatabaseRows = 10000
   private val TestDatabaseRows = 10000
-  private val database = ReactiveMongoPlugin.db
+
+  val DEFAULT_HOST = "localhost:27017"
+  val servers = current.configuration.getStringList("mongodb.servers") match {
+    case Some(servers) => collectionAsScalaIterable(servers).toList
+    case None => List(DEFAULT_HOST)
+  }
+
+  val DEFAULT_DB = "hello_world"
+  val db = current.configuration.getString("mongodb.db").getOrElse(DEFAULT_DB)
+
+  //private val dbExecutionContext: ExecutionContext = Akka.system.dispatchers.lookup("dbExecutionContext")
+  private val database = ReactiveMongoPlugin
+    .driver
+    .connection(servers, nbChannelsPerNode = 10)
+    .db(db)//(dbExecutionContext)
+
   private def collection: JSONCollection = database.collection[JSONCollection]("world")
   private def collection: JSONCollection = database.collection[JSONCollection]("world")
   private val projection = Json.obj("_id" -> 0)
   private val projection = Json.obj("_id" -> 0)
 
 
@@ -26,7 +43,7 @@ object Application extends Controller {
       } yield { collection
       } yield { collection
         .find(Json.obj("id" -> (random.nextInt(TestDatabaseRows) + 1)), projection)
         .find(Json.obj("id" -> (random.nextInt(TestDatabaseRows) + 1)), projection)
         .cursor[JsValue]
         .cursor[JsValue]
-        .toList
+        .toList.map(list => list.head)
       }))
       }))
 
 
       futureWorlds.map { worlds =>
       futureWorlds.map { worlds =>

+ 15 - 0
play-scala-mongodb/conf/application.conf

@@ -51,3 +51,18 @@ logger.play=ERROR
 
 
 # Logger provided to your application:
 # Logger provided to your application:
 logger.application=ERROR
 logger.application=ERROR
+
+#play {
+#  akka {
+#    event-handlers = ["akka.event.slf4j.Slf4jEventHandler"]
+#    loglevel = ERROR
+#    actor {
+#      dbExecutionContext = {
+#        fork-join-executor {
+#          parallelism-min = 128
+#          parallelism-max = 128
+#        }
+#      }
+#    }
+#  }
+#}

+ 2 - 3
play-scala-mongodb/project/Build.scala

@@ -3,15 +3,14 @@ import Keys._
 
 
 object ApplicationBuild extends Build {
 object ApplicationBuild extends Build {
 
 
-  val appName         = "play-scala"
+  val appName         = "play-scala-mongodb"
   val appVersion      = "1.0-SNAPSHOT"
   val appVersion      = "1.0-SNAPSHOT"
 
 
   val appDependencies = Seq(
   val appDependencies = Seq(
-    "org.reactivemongo" %% "play2-reactivemongo" % "0.9-SNAPSHOT"
+    "org.reactivemongo" %% "play2-reactivemongo" % "0.9"
   )
   )
 
 
   val main = play.Project(appName, appVersion, appDependencies).settings(
   val main = play.Project(appName, appVersion, appDependencies).settings(
-    resolvers += "Sonatype snapshots" at "http://oss.sonatype.org/content/repositories/snapshots/"
   )
   )
 
 
 }
 }