Playframework 运行忽略参数-Dhttp.address=****

Playframework 运行忽略参数-Dhttp.address=****,playframework,playframework-2.2,Playframework,Playframework 2.2,我的问题是,当我在开发人员模式下启动服务器上的play framework服务器时,我无法指定服务器应该侦听的HTTP端口。 尝试以下命令时,HTTP地址始终被忽略: ./play "run -Dhttp.address=192.168.1.1 -Dhttp.port=8080" 端口设置正确,但与此输出上显示的地址不同: 当我在生产模式下使用start运行服务器时,地址设置正确,一切正常。但出于开发目的,我希望在所有文件发生更改时重新加载和编译它们,这样我就可以始终使用最新的代码。 我已经

我的问题是,当我在开发人员模式下启动服务器上的play framework服务器时,我无法指定服务器应该侦听的HTTP端口。 尝试以下命令时,HTTP地址始终被忽略:

./play "run -Dhttp.address=192.168.1.1 -Dhttp.port=8080"
端口设置正确,但与此输出上显示的地址不同:

当我在生产模式下使用
start
运行服务器时,地址设置正确,一切正常。但出于开发目的,我希望在所有文件发生更改时重新加载和编译它们,这样我就可以始终使用最新的代码。
我已经尝试了很多可能性,但到目前为止还不能解决这个问题。希望有人能给我一些提示如何解决这个问题。提前感谢您的支持。

您不会喜欢这个答案的。对于Play2.2,这正是(在GitHub上)所做的

start
使用端口和地址属性:

  val server = new NettyServer(
    new StaticApplication(applicationPath),
    Option(System.getProperty("http.port")).fold(Option(9000))(p => if (p == "disabled") Option.empty[Int] else Option(Integer.parseInt(p))),
    Option(System.getProperty("https.port")).map(Integer.parseInt(_)),
    Option(System.getProperty("http.address")).getOrElse("0.0.0.0")
  )
运行
仅使用端口属性:

  def mainDevHttpMode(sbtLink: SBTLink, sbtDocHandler: SBTDocHandler, httpPort: Int): NettyServer = {
    mainDev(sbtLink, sbtDocHandler, Some(httpPort), Option(System.getProperty("https.port")).map(Integer.parseInt(_)))
  }

  private def mainDev(sbtLink: SBTLink, sbtDocHandler: SBTDocHandler, httpPort: Option[Int], httpsPort: Option[Int]): NettyServer = {
    play.utils.Threads.withContextClassLoader(this.getClass.getClassLoader) {
      try {
        val appProvider = new ReloadableApplication(sbtLink, sbtDocHandler)
        new NettyServer(appProvider, httpPort,
          httpsPort,
          mode = Mode.Dev)
      } catch {
        case e: ExceptionInInitializerError => throw e.getCause
      }

    }
  }
但是,您可以使用
ReloadableApplication
和您想要使用的地址(尽管我从未尝试过)自己调用
NettyServer
;或者b)使用非播放解决方案,在该解决方案中,您可以修改网络设置以使用不同的接口作为默认地址