你不会喜欢这个答案的。对于 Play 2.2,这正是 code(在 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")
)
run 仅使用端口属性:
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
}
}
}
但是,您可以 a) 使用 ReloadableApplication 和您要使用的地址致电 NettyServer(尽管我从未尝试过);或 b) 使用非 Play 解决方案,修改网络设置以使用不同的接口作为默认地址。