在Play Framework 2应用程序中检索端口号

Gon*_*hal 7 playframework-2.0

问题是:如何检索播放正在侦听的端口号,无论它是如何定义的(配置,命令行参数,或根本没有).

此答案使用Play Framework检索应用程序中的端口号必须是Play v1,因为该代码无法编译.

在Play 2 Java中有:

Integer port = Play.application().configuration().getInt("http.port");
Run Code Online (Sandbox Code Playgroud)

这不会返回实际的端口号,至少在所有情况下都不会.如果Play运行如下:

run 80 -Dhttp.address=example.com
Run Code Online (Sandbox Code Playgroud)

然后它返回null.

如果Play运行为

run -Dhttp.port 80 -Dhttp.address=example.com
Run Code Online (Sandbox Code Playgroud)

然后在默认端口(9000)上开始播放.

正如biesior指出的那样,两次提到港口是有效的:

play -Dhttp.port=80 "run 80"
Run Code Online (Sandbox Code Playgroud)

这当然不是最佳的,因为一个是Play实际使用的,另一个是它报告的内容.

但它会回答我关于开发模式的问题.但是,正如文档所说,Play永远不应该使用runprod 运行.那么start命令的等价物是什么,没有更好,更安全的方法吗?(我对Java版本很感兴趣,但其他人也可能想了解Scala.)

bie*_*ior 3

在开发模式下运行,您需要使用双倍表示法

play -Dhttp.port=80 "run 80"
Run Code Online (Sandbox Code Playgroud)

不幸的是,您必须对默认端口执行相同的操作

play -Dhttp.port=9000 "run 9000"
Run Code Online (Sandbox Code Playgroud)

所以我只是建议编写 shell 脚本(或 Windows 中的 .bat),以便轻松启动所有必需的参数。