你不会喜欢这个答案。对于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
}
}
}
但是,您可以一)自己叫NettyServer
与ReloadableApplication
和你想要的地址使用(虽然我从来没有尝试过);或b)使用非Play解决方案修改网络设置以使用默认地址的不同接口。