2016-05-25 9 views
0

[Ich bin neu bearbeite diese Frage auf meiner letzten Tests zu reflektieren]reactivemongo spielen 2.3 0.11.7 bis 0.11.11 Upgrade erhöht ExceptionInInitializerError

Ich versuche, meine akka/spielen 2.3 Anwendung von

Upgrade

"org.reactivemongo" %% "play2-reactivemongo" % "0.11.7.play23"

zu

"org.reactivemongo" %% "play2-reactivemongo" % "0.11.11-play23"

Compilation geht in Ordnung, aber zur Laufzeit bekomme ich folgende Fehlermeldung:

[ERROR] -- NettyTransport(akka://reactivemongo) 
failed to bind to /127.0.0.1:2552, shutting down Netty transport 

... 

Caused by: org.jboss.netty.channel.ChannelException: Failed to bind to: /127.0.0.1:2552 

Der Akka Teil application.conf lautet wie folgt:

akka { 
    loggers = ["akka.event.slf4j.Slf4jLogger"] 
    loglevel = "DEBUG" 
    actor { 
     provider = "akka.remote.RemoteActorRefProvider" 
     mailbox { 
      requirements { 
       "akka.dispatch.BoundedMessageQueueSemantics" = bounded-mailbox 
      } 
     } 
    } 
    remote { 
     enabled-transports = ["akka.remote.netty.tcp"] 
     netty.tcp { 
      hostname = "127.0.0.1" 
      port = 2552 
     } 
    } 
} 

Die Ausnahme wird ausgelöst, wenn versucht, die reactivemongo zu instanziiert Treiber

val driver = new reactivemongo.api.MongoDriver() 

Dies deutet darauf hin, dass die mongodriver Akka unter der Haube verwendet wird, und wird auf die gleiche Adresse, die meine Hauptanwendung zu binden. Und in der Tat, wenn ich meine application.conf bearbeiten und die akka.remote.netty.tcp.port 2552-2553 ändern, erhalte ich die folgende Ausnahme:

[ERROR] -- NettyTransport(akka://reactivemongo) 
failed to bind to /127.0.0.1:2553, shutting down Netty transport 

In den früheren Versionen von reactivemongo, standardmäßig Instanziieren des Treibers begann ein neues Akteursystem, vielleicht versucht Version 0.11.11 das vorhandene System wiederzuverwenden?

ich den akka Port durch den Fahrer zu ändern versucht haben, wie folgt:

val customConf = ConfigFactory.parseString(""" 
    akka { 
    remote { 
     netty.tcp.port = 4711 
    } 
    } 
    """) 

val typesafeConfig: com.typesafe.config.Config = ConfigFactory.load(customConf) 

val driver = new reactivemongo.api.MongoDriver(Some(typesafeConfig)) 

Aber das funktioniert nicht, wird der neue Hafen nicht berücksichtigt, und ich halte den gleichen Fehler:

[ERROR] -- NettyTransport(akka://reactivemongo) 
failed to bind to /127.0.0.1:2552, shutting down Netty transport 
+0

Teile Code/reproducer – cchantep

+0

OK, würde helfen, habe ich nur noch einigen Kontext Code. – david

+0

Sie verwenden 'connection (..)' aka 'connection.apply', verwenden Sie besser die neue' connection.database', die die richtige DB-Auflösung hat. – cchantep

Antwort

0

Tatsächlich lädt ReactiveMongo seine Konfiguration vom Schlüssel 'mongo-async-driver'. Also, die folgenden Genehmigungen Hinzufügen ReactiveMongo zugrunde liegenden Akka System zu konfigurieren:

val customConf = ConfigFactory.parseString(""" 
    mongo-async-driver { 
    akka { 
     loglevel = WARNING 
     remote { 
     enabled-transports = ["akka.remote.netty.tcp"] 
     netty.tcp { 
      hostname = "127.0.0.1" 
      port = 4711 
     } 
     } 
    } 
    } 
    """)