2009-12-01 15 views
9

में शट डाउन हुक पंजीकृत करना मेरे पास एक वसंत एप्लिकेशन है जो शट डाउन पर बीन नष्ट विधियों को नहीं बुला रहा है। मैंने बीनआरफैक्ट्री में तत्कालता के कारण इस संदर्भ को देखा है, और यह एप्लिकेशन संदर्भ पर मैन्युअल रूप से रजिस्टरShutdownHook() को कॉल करके अवरुद्ध किया जा सकता है। यह विधि वसंत से संस्करण 2.0 - 2.5 के बीच गायब हो गई है।स्प्रिंग 2.5

क्या कोई मुझे इस दिशा में इंगित कर सकता है कि यह अब कैसे किया जाता है?

धन्यवाद।

+0

क्या आप वर्णित प्रारंभिक समस्या के विवरण के लिए एक लिंक पोस्ट कर सकते हैं? – skaffman

उत्तर

17

यह विधि अभी भी में उपलब्ध है और AbstractApplicationContext द्वारा लागू की गई है।

तो तुम वैकल्पिक रूप से इस

ApplicationContext ctx = ...; 
if (ctx instanceof ConfigurableApplicationContext) { 
    ((ConfigurableApplicationContext)ctx).registerShutdownHook(); 
} 

ऐसा करने में सक्षम हो सकता है तो आप बस ((ConfigurableApplicationContext)ctx).close() खुद कह सकते हैं, जबकि आवेदन को बंद या अपने खुद के बंद हुक का उपयोग कर,:,

Runtime.getRuntime().addShutdownHook(new Thread() { 
    public void run(){ 
     if (ctx instanceof ConfigurableApplicationContext) { 
      ((ConfigurableApplicationContext)ctx).close(); 
     } 
    } 
}); 
0

इतने सारे upvotes लेकिन दूसरा कथन पूरी तरह गलत है, जावा में एक system.exit वसंत को आपके शट डाउनहुक में आने से पहले समाप्त कर देगा, जाने का सही तरीका ये 4 तरीके

1 InitializingBean और DisposableBean कॉलबैक इंटरफेस विशिष्ट व्यवहार के लिए 2 अन्य वाकिफ इंटरफेस 3 कस्टम init() और नष्ट() सेम विन्यास फाइल में तरीकों 4 @PostConstruct और @PreDestroy एनोटेशन

क्लिक करें here!

संबंधित मुद्दे