Die Frage ist: Wie bekomme ich die Portnummer, die Wiedergabe überwacht, egal wie es definiert wurde (Konfiguration, Befehlszeilenargument oder überhaupt nicht).Abrufen der Portnummer in Play Framework 2 App
Diese Antwort Retrieving port number in-application using Play Framework muss für Play v1 sein, da dieser Code nicht kompiliert.
Im Play 2 Java gibt es:
Integer port = Play.application().configuration().getInt("http.port");
Das ist nicht die tatsächliche Portnummer zurückkehrt, zumindest nicht in allen Fällen. Wenn Wiedergabe als ausgeführt wird:
run 80 -Dhttp.address=example.com
Dann gibt es null
.
Wenn Wiedergabe als
ausgeführt wirdrun -Dhttp.port 80 -Dhttp.address=example.com
startet die Wiedergabe auf dem Standard-Port (9000).
Wie biesior wies darauf hin, es funktioniert durch den Hafen zu erwähnen zweimal:
play -Dhttp.port=80 "run 80"
Was natürlich nicht optimal ist, da man ist, was Spielen tatsächlich verwendet wird, und das andere ist, was es berichtet.
Aber es würde meine Frage für den Entwicklermodus beantworten. Wie in der Dokumentation erwähnt, sollte Play nie mit run
in prod ausgeführt werden. Also, was ist das Äquivalent für den Befehl start
, und gibt es keinen besseren, sichereren Weg? (Ich habe Interesse an der Java-Version, aber andere vielleicht gefallen auch über Scala wissen.)
Nur eine Anmerkung ... Sie sollten Play auf Port 80 (mindestens auf Unix) wirklich nicht laufen lassen. Da Sie Play als root ausführen müssen, ist das nicht sicher. –