Pytanie brzmi: w jaki sposób pobrać numer portu, na którym nasłuchuje odtwarzanie, bez względu na sposób jego zdefiniowania (konfiguracja, argument linii poleceń lub w ogóle).Pobieranie numeru portu w aplikacji Play Framework 2 app
Ta odpowiedź Retrieving port number in-application using Play Framework musi być dla Play v1, ponieważ kod ten nie jest kompilowany.
In Play 2 Java jest:
Integer port = Play.application().configuration().getInt("http.port");
To nie zwraca rzeczywisty numer portu, przynajmniej nie we wszystkich przypadkach. Jeśli Play jest uruchamiany jako:
run 80 -Dhttp.address=example.com
Następnie zwraca null
.
Jeśli Play jest uruchamiany jako
run -Dhttp.port 80 -Dhttp.address=example.com
następnie odtworzyć rozpoczyna się w porcie domyślnym (9000).
Jak biesior wskazał, że działa przez wymienienie port dwukrotnie:
play -Dhttp.port=80 "run 80"
Co oczywiście nie jest optymalny, ponieważ jeden jest co Zagraj faktycznie korzysta, a drugi jest tym, co zgłasza.
Ale to by odpowiadało na moje pytanie dotyczące trybu dewelopera. Jednak, jak wynika z dokumentacji, Play nie powinien nigdy być uruchamiany przy użyciu run
w prod. Więc jaki jest odpowiednik polecenia start
i czy nie ma lepszego, bezpieczniejszego sposobu? (Jestem zainteresowany w wersji Java, ale inni mogą chcieć wiedzieć o Scala zbyt.)
Po prostu uwaga ... Naprawdę nie powinno się uruchamiać Graj na porcie 80 (przynajmniej na Unixie). Ponieważ wymaga to uruchomienia gry jako root i nie jest to bezpieczne. –