2015-03-18 18 views
11

Spring Boot kullanıyorum ve kullanıcının uygulamayı yeniden başlatmasına neden olacak bir dosya yükleyebileceği bir kullanım durumum var (kullanıcının yüklemesi birden çok fasulyenin oluşturulması sırasında kullanılıyor). Uygulamayı yeniden başlatmayı engelleyebileceğimi biliyorum, ama şu anda - istediğim bu.İlkbahar İlkbahar uygulamasını progresif olarak yeniden başlatın

Spring Cloud projesinde, RestartEndpoint buldum, ancak ApplicationPreparedEvent adlı kişinin işten çıkması olası değil. Spring Boot uygulamasını programla yeniden başlatmanın başka bir yolu var mı?

cevap

4

Spring ApplicationContext'te refresh() yöntemini çağırarak bunu yapmanın en kolay yolu. Bu, tüm fasulyelerinizi öldürecek ve yeniden yükleyecektir, bu nedenle bunun yalnızca uygulamanızın güvenli olması durumunda gerçekleşeceğinden emin olmalısınız.

+0

Denedim ve işe yaramıyor gibi görünmüyor, java.lang.IllegalStateException olsun: GenericApplicationContext birden fazla yenileme denemesini desteklemiyor: sadece bir kez 'yenileme' çağırın. Ayrıca şu soruya da bakınız: http://stackoverflow.com/questions/24720330/reload-or-refresh-a-spring-application-context-inside-a-test-method – yglodt

3

Linux üzerinde çalışan Spring Boot uygulamasının root olarak çalışması için özel bir durum var. Ben systemd hizmet olarak uygulamayı çalıştırmak yana

, böyle resetleyebiliyoruz:

Runtime.getRuntime().exec(new String[] { "/bin/systemctl", "restart", "foo" }); 

uygulamanız bir setuid sarıcı-komut kullanılabilir, (umarım) root olarak çalıştırmak için gerekli değilse, veya daha iyisi sudo kullanın.

Kontrol bunu nasıl bu cevap: iyi

https://superuser.com/questions/440363/can-i-make-a-script-always-execute-as-root

İlgili konular