मैं org.jruby.embed.ScriptingContainer
एपीआई का उपयोग कर एक जेवीएम प्रक्रिया के अंदर जेआरबीई पर एक मिडलमैन (जो वीब्रिक का उपयोग करता है) सर्वर चला रहा हूं।JVM प्रक्रिया में SIGTERM के जवाब में मैं एक एम्बेडेड JRuby को कैसे बंद कर सकता हूं?
अगर मैं साफ़ रूप से बंद कर देता हूं और सर्वर को JVM के अंदर से रोकता हूं, तो सब कुछ अपेक्षित काम करता है।
लेकिन अगर मैं JVM प्रक्रिया में एक सिगरेट भेजता हूं (उदाहरण के लिए, कमांड लाइन पर ctrl + c को मारकर), कंसोल लौटाता है लेकिन JVM प्रक्रिया समाप्त नहीं होती है - यह अनिश्चित काल तक लटकती है जब तक कि मैं इसे सिगकिल नहीं भेजता ।
मैंने ScriptingContainer
उदाहरण को समाप्त करने के लिए एक जेवीएम शटडाउन हुक पंजीकरण करने का प्रयास किया, लेकिन हुक कभी नहीं आग लगती है। मुझे यकीन नहीं है कि क्यों ... शायद JRuby किसी भी तरह से SIGTERM निगल रहा है?
मैं JVM को सभी तरह से बंद करने के लिए कैसे प्राप्त कर सकता हूं, साफ-सुथरा, भले ही इसमें चल रहे वेब्रिक सर्वर हों?
क्या आपने सत्यापित किया है कि समस्या 'स्क्रिप्टिंग कोंटेनर' को स्वैप करके, ''org.jruby.embed.EmbedRubyInstanceConfigAdapter'] (http://javadox.com/org.jruby/jruby] के कुछ भी कार्यान्वयन के लिए संभवतः JRuby है। -कंपूर्ण/1.7.13/संगठन/jruby/एम्बेड/embedRubyInstanceConfigAdapter.html) और देख रहा है कि समस्या बनी रहती है? – durron597
नियंत्रण-सी SIGTERM नहीं भेजता है, यह SIGINT – rghome
भेजता है आप किस ओएस पर हैं? क्या आप ctrl + c दबाए जाने के बाद JVM का थ्रेड डंप प्रदान कर सकते हैं? ('jstack' चलाएं) आप कैसे जांचते हैं कि आपका शटडाउन हुक आग लग रहा है या नहीं? –