2013-05-16 25 views
6

Bir sunucunun derhal kapatılmasını önlemek için UPS kullanmanın önemini biliyorum. Bir Java uygulamasında böyle bir etkinliği nasıl dinlerim?Güç kesintisi durumunda kapatarak uygulamayı kapatın

Güç kesildiğinde, UPS'imin 5 dakika boyunca tam yük altında çalışmaya devam edeceğini varsayalım. Sunucular çalışmaya devam edecekler ancak uygulamamın, işleri düzgün bir şekilde kapatmaya başlama zamanının nasıl olacağını bilecekler mi?

Bu özel uygulama çoğunlukla veritabanı işlemlerine istemci ile ilgilidir. Mysql işlemlerinin ortasında hemen güç kaybeden bir sunucu durumunda çoğunlukla bozuk verilerle ilgileniyorum. Aşağıdaki noktalar bir güç durumunu ele almak için uygun bir yol mu?

  • Güç kesiliyor. UPS akü modu. App bunu algılar.
  • Uygulama bir şekilde gelen tüm istekleri engeller (bu konuda herhangi bir öneride yardımcı olabilir)
  • Birkaç dakika içinde işlemdeki tüm işlemler tamamlanmalıdır.
  • Kapatma uygulaması
  • Pil biterse, sunucu kapanıyor ... geri yüklenmek için bekleyin.

Yeniden başlatıldığında sunucuyu ve uygulamaları otomatik olarak yeniden başlatmanın bir yolu var mı yoksa bu işlem elle yapılmalı mı?

+0

Uygulama hangi işletim sisteminde çalışıyor? – andrewmu

+0

Ubuntu sunucusu. Bundan bahsetmeliydin. – ryandlf

cevap

3

KGK ile uğraşmak muhtemelen OS seviyesinde, SNMP veya Sistem komut dosyaları gibi denetim araçlarıyla ele alınmalıdır.

Online bakıyorum, büyük olasılıkla bir UPS'den bir Güç Arızası olayı alırken bazı eylemleri yürütmek için birçok komut dosyası bulacaksınız.

Sen JVM PID (Unix/Linux üzerinde) bir QUIT sinyal göndermeye ve JVM tarafında sen yöntemiyle Bahar gibi bir çerçeve kullanarak, bu ise Runtime.addShutdownHook

kesinlikle zaten kayıt bir kapatma kanca kayıt olabilirsiniz var bir şey ve eğer yapılandırılmışsa, fasulyelerin yok etme yöntemlerini çağırır.

+0

Bu, söz konusu çözümden biraz daha temiz görünüyor (soket üzerinde dinleme). Doğru? Öbür tarafta bu şekilde fayda var mı? – ryandlf

+0

Soketi dinleyerek ve UPS'e sokete bir sinyal göndererek, sisteminiz daha erken uyarıyı alabilir. OS'nin yerleşik mekanizmalarını kullanarak, OS'nin sinyali JVM'ye göndermeden önce başka şeyler yapması olabilir. Fakat bu bir alternatifin diğerinden daha iyi olduğu anlamına gelmez. Erken bir bildirime ihtiyaç duyulursa ve bir soket aracılığıyla uygulanırsa, uygulama yine de JVM'nin kapatma görevlileri üzerinde de tepki göstermelidir, zira kapatma için başka sebepler de olabilir. – mschenk74

1

Java uygulamasında localhost'tan tanımlanan bağlantı noktasını dinlemek için java soketi oluşturun ve güç kaybettiğinde bu bağlantı noktasına olay göndermek için UPS yazılımını yapılandırın.

İlgili konular