【问题标题】:reactivemongo play 2.3 0.11.7 to 0.11.11 upgrade raises ExceptionInInitializerErrorreactivemongo play 2.3 0.11.7 到 0.11.11 升级引发 ExceptionInInitializerError
【发布时间】:2016-05-25 13:14:00
【问题描述】:

[我正在重新编辑这个问题以反映我上次的测试]

我正在尝试从

升级我的 akka / play 2.3 应用程序

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

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

编译正常,但在运行时出现以下错误:

[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

application.conf 的 Akka 部分内容如下:

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
        }
    }
}

尝试实例化响应式mongo驱动程序时引发异常

val driver = new reactivemongo.api.MongoDriver()

这表明 mongodriver 在后台使用 Akka,并且绑定到与我的主应用程序相同的地址。事实上,如果我编辑我的 application.conf 并将 akka.remote.netty.tcp.port 从 2552 更改为 2553,我会收到以下异常:

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

在以前的reactivemongo版本中,默认情况下,实例化驱动程序是启动一个新的actor系统,所以也许0.11.11版本试图重用现有系统?

我尝试修改驱动使用的akka​​端口如下:

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))

但这不起作用,没有考虑新端口,我不断收到同样的错误:

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

【问题讨论】:

  • 分享代码/复制者会有所帮助
  • 好的,我刚刚添加了一些上下文代码。
  • 您正在使用connection(..) aka connection.apply,您最好使用新的connection.database,它具有适当的数据库分辨率。
  • 完成,所有的connection()都被connection.db()替换了。但是它并不能解决问题。
  • 我说的不是 .db 而是 .database ,完全不一样

标签: akka playframework-2.3 initializer reactivemongo


【解决方案1】:

实际上,ReactiveMongo 从键 'mongo-async-driver' 加载其配置。 因此,添加以下许可来配置 ReactiveMongo 底层 akka 系统:

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
        }
      }
    }
  }
  """)

【讨论】:

    猜你喜欢
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    • 1970-01-01
    相关资源
    最近更新 更多