Çalıştığım şirkette eski de olsa Glassfish 2.1.1 sunucusu üzerinde barındırdığımız bir uygulamamız var. Bütün sistemi daha yeni ve hızlı bir ortama taşımamız gerektiğinde Glassfish uygulama sunucusu yeni donanımlar üzerine yüklendi ve gerekli ayarlamaları yapıldı. Ancak test aşamasında farkettik ki Glassfish sunucusunun yüklü olduğu makinede kullanıcı oturumunu kapattığı anda uygulama yanıt vermeyi kesiyor. Biraz araştırma yapınca farkettik ki kullanıcı makinede oturum kapattığı anda java.exe servisi çalışmayı durduruyor.
Google sağolsun çözümü bulmak çok uzun sürmedi. Meğerse kullanıcı oturum kapattığı anda JVM işletim sisteminden gelen bir sinyalle kendini durduruyormus. Bu davranışı devre dışı bırakmak için JVM parametrelerini biraz kurcalamak gerekti. JVM’yi -Xrs parametresiyle çalıştırdıgımız zaman kullanıcı oturum kapatsa bile JVM arka planda çalışmaya devam edecektir. Bizim sorunumuz Glassfish sunucusu ile olduğu için domain.xml dosyasına -Xrs parametresini de ekleyerek sorunu çözdük.
Ancak dikkat edilmesi gereken bir nokta var. -X ile başlayan JVM parametreleri standart değil yani her JVM gerçekleştiriminde yer almayabilir veya olsa bile aynı şekilde davranmayabilir. Komut satırında java -X komutunu girerseniz sizin JVM’nizin hangi parametreleri desteklediğini görebilirsiniz.
nohup komutu sorunu çözmüyor mu uygulamayı başlatırken? Play! Framework uygulamalarımda işe yaradığı için merak ettim.
Server linux olmadığı için nohup kullanma şansım olmadı ama olsaydı işe yarardı diye tahmin ediyorum.