वे एक वसंत आवेदन को बंद करने के कई तरीके हैं। एक को कॉल करना है ApplicationContext
:
ApplicationContext ctx =
SpringApplication.run(HelloWorldApplication.class, args);
// ...
ctx.close()
आपका प्रश्न यह सुझाव देता है कि आप अपना आवेदन बंद करके करना चाहते हैं Ctrl+C
, जिसका उपयोग अक्सर किसी आदेश को समाप्त करने के लिए किया जाता है। इस मामले में...
उपयोग endpoints.shutdown.enabled=true
सबसे अच्छा नुस्खा नहीं है। इसका मतलब है कि आप अपने आवेदन को समाप्त करने के लिए एक अंतिम बिंदु को उजागर करते हैं। इसलिए, आपके उपयोग के मामले और आपके वातावरण के आधार पर, आपको इसे सुरक्षित करना होगा ...
Ctrl+C
अपने मामले में बहुत अच्छा काम करना चाहिए। मुझे लगता है कि आपका मुद्दा एम्परसेंड (और) के कारण है और अधिक स्पष्टीकरण:
स्प्रिंग एप्लीकेशन प्रसंग में जेवीएम रनटाइम के साथ शटडाउन हुक रजिस्टर हो सकता है। ApplicationContext प्रलेखन देखें ।
मुझे नहीं पता कि स्प्रिंग बूट ने इस हुक को स्वचालित रूप से कॉन्फ़िगर किया है जैसा कि आपने कहा था। मुझे लगता है कि यह है।
पर Ctrl+C
, आपका शेल INT
अग्रभूमि अनुप्रयोग के लिए एक संकेत भेजता है । इसका अर्थ है "कृपया अपने निष्पादन को बाधित करें"। आवेदन इस संकेत को फंसा सकता है और इसकी समाप्ति (वसंत द्वारा पंजीकृत हुक) से पहले सफाई कर सकता है, या बस इसे (खराब) अनदेखा कर सकता है।
nohup
वह कमांड है जो HUP सिग्नल को अनदेखा करने के लिए एक जाल के साथ निम्नलिखित प्रोग्राम को निष्पादित करता है। HUP का उपयोग प्रोग्राम को समाप्त करने के लिए किया जाता है, जब आप हैंग हो जाते हैं (उदाहरण के लिए अपने ssh कंसेशन को बंद करें)। इसके अलावा यह इस बात से बचने के लिए आउटपुट को पुनर्निर्देशित करता है कि आपका प्रोग्राम गायब टीटीवाई पर ब्लॉक करता है। nohup
INT संकेत की अनदेखी नहीं करता है। तो यह Ctrl+C
काम करने के लिए नहीं रोकता है।
मुझे लगता है कि आपका मुद्दा एम्परसेंड (और) के कारण है, नोह द्वारा नहीं। Ctrl+C
अग्रभूमि प्रक्रियाओं के लिए एक संकेत भेजता है। एम्परसैंड आपके एप्लिकेशन को पृष्ठभूमि में चलाने का कारण बनता है। एक समाधान: करते हैं
kill -INT pid
उपयोग kill -9
या kill -KILL
खराब है क्योंकि एप्लिकेशन (यहां JVM) इसे शान से समाप्त करने के लिए नहीं फंसा सकता है।
एक अन्य उपाय यह है कि अपने आवेदन को अग्रभूमि में वापस लाया जाए। फिर Ctrl+C
काम करेंगे। बैश जॉब कंट्रोल पर एक नजर, अधिक सटीक रूप से fg
।