问题是:我如何检索播放正在侦听的端口号,无论它是如何定义的(配置、命令行参数或根本没有)。
这个答案Retrieving port number in-application using Play Framework必须适用于 Play v1,因为该代码无法编译。
在 Play 2 Java 中有:
Integer port = Play.application().configuration().getInt("http.port");
这不会返回实际的端口号,至少不是在所有情况下。如果 Play 运行为:
run 80 -Dhttp.address=example.com
然后它返回null
。
如果 Play 运行为
run -Dhttp.port 80 -Dhttp.address=example.com
然后在默认端口 (9000) 上开始播放。
正如 biesior 指出的那样,它通过两次提及端口来起作用:
play -Dhttp.port=80 "run 80"
这当然不是最佳的,因为一个是 Play 实际使用的,另一个是它报告的。
但它会回答我关于开发模式的问题。然而,正如文档所说,Play 永远不应该run
在 prod 中运行。那么start
命令的等价物是什么,没有更好,更安全的方法吗?(我对 Java 版本感兴趣,但其他人可能也想了解 Scala。)