問題は、ポート番号がどのように定義されていても (構成、コマンドライン引数、またはまったくない)、play がリッスンしているポート番号を取得するにはどうすればよいかということです。
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) で Play が開始されます。
biesior が指摘したように、ポートを 2 回言及することで機能します。
play -Dhttp.port=80 "run 80"
1 つは Play が実際に使用するものであり、もう 1 つは Play が報告するものであるため、もちろん最適ではありません。
しかし、開発モードに関する私の質問には答えます。ただし、ドキュメントにあるように、Play はrun
in prod を使用して実行しないでください。では、コマンドに相当するものは何start
ですか?また、より安全で優れた方法はありませんか? (私は Java バージョンに興味がありますが、他の人は Scala についても知りたいと思うかもしれません。)