2013-05-04 17 views

Odpowiedz

9

Zawsze jest nazwa hosta maszyny (który wygląda mniej więcej tak d.LONG_GUID Przypuszczam (choć nie próbowałem), że to powinno działać.

String localhostname = java.net.InetAddress.getLocalHost().getHostName();

także mało znany sekret, ale można uzyskać "web.1", "web.2" id poprzez patrząc na wartość zmiennej środowiskowej PS1

String hostId = System.getenv("PS1")

EDIT 2013-Lipiec-26

Zgodnie Heroku changelog lokalna zmienna DYNO teraz zastępuje PS, która zastąpiła PS1.

+1

dobra wskazówka! Sądzę, że masz na myśli "PS" (nie "PS1", który jest podpowiedzią). – rewbs

+0

Dzięki. Następnie awansuj :-) Właściwie mam na myśli PS1, chyba że zmienił go w międzyczasie. –

+0

Tak, przegrałem. :) Mogę potwierdzić, że nazwa dyno jest zdecydowanie w "PS", a nie w "PS1". – rewbs

1

Zespół Heroku rozwiązał ten problem, a teraz Dyno Manager dodaje zmienne środowiskowe przechowujące DYNO, które przechowują identyfikator Twojego Dyno, np. web.1, web.2, foo.1 itd. Jednak zmienna nadal jest zmienna lub podlega eksperymentalna i może ulec zmianie lub usunięciu.

Wartość tej zmiennej można uzyskać za pomocą System.getenv(String) w Javie.

Przykład:

final String dynoId = System.getenv("DYNO"); 
final Matcher matcher = Pattern.compile("(\\w+)\\.(\\d+)").matcher(dynoId); 

String id = null; 

if(matcher.find()) { 
    id = matcher.group(2); // returns index: 1 
    // matcher.group(1) - returns name: web 
} 

Mam nadzieję, że pomoże

Powiązane problemy