2011-12-30 10 views
13

मैंने एक बहुप्रचारित वेब एप्लिकेशन विकसित किया है जो टोमकैट में चलता है। लेकिन मैं उपयोग नहीं कर सकतेक्या थॉमस को विशेष रूप से टॉमकैट द्वारा बंद करने के लिए विशेष डिज़ाइन होना चाहिए?

shutdown.bat 

बिलाव शान से नहीं रोका। डीबगर में मैंने देखा कि शट डाउन कमांड के बाद धागे चलते रहेंगे। क्या मुझे विशेष आवश्यकताओं को पूरा करने के लिए अपना आवेदन कोड ठीक करना है? धन्यवाद।

उत्तर

12

... और जावा सर्वलेट वातावरण की कार्यप्रणालियों के अन्य प्रतिक्रियाओं को बांधने के लिए;

यदि आप अपने धागे को डिमन थ्रेड के रूप में घोषित नहीं करते हैं, तो सर्वर को बंद करने के लिए सर्वर को बंद करने का तरीका ServletContextListener लागू करना है और इसे अपने वेब एप्लिकेशन (web.xml) पर कॉन्फ़िगर करना है। जब टोमकैट बंद हो रहा है, तो यह पहले प्रत्येक एप्लिकेशन को बंद कर देगा, जो बदले में श्रोता के contextDestroyed() विधि का कारण बन जाएगा - और यह वह जगह है जहां आप अपने स्वयं के धागे सिग्नल कर सकते हैं कि उन्हें अपना काम पूरा करना चाहिए।

+0

वैसे भी इस मुद्दे को उत्पन्न करने वाले धागे को खोजने के लिए, मेरे लिए सहायक होगा, क्योंकि मैं भी इस मुद्दे को मार रहा हूं। – Azim

+0

आप kill -3, jstack, या tomcat का उपयोग कर सकते हैं अक्सर catalina.out में स्टैक निशान डंप करता है। – ticktock

6

कोई भी थ्रेड जो अभी भी चल रहा है, जावा (टॉमकैट) प्रक्रिया को जीवित रखेगा। सुनिश्चित करें कि आपके सभी धागे बाहर निकलें। एक बार आपके धागे से बाहर निकलने के बाद, टोमकैट बंद हो जाएगा।

Thread के लिए javadoc देखें। नोट निम्नलिखित:

जावा वर्चुअल मशीन निम्न में से या तो जब तक होता धागे निष्पादित करने के लिए जारी है:

  • वर्ग रनटाइम के निकास विधि बुलाया गया है और सुरक्षा प्रबंधक के लिए बाहर निकलें कार्रवाई की अनुमति है जगह लें।
  • सभी धागे जो डेमॉन धागे नहीं हैं, या तो कॉल से रन विधि पर लौटने या रन विधि से परे प्रचार करने वाले अपवाद को फेंक कर मर गए हैं।
+0

क्या आप कोई उपकरण सुझा सकते हैं जिसके माध्यम से हम इन धागे के बारे में जांच कर सकते हैं? – Azim

5

आप बेहतर उन पर interrupt बुला और सुनिश्चित करें कि वे इस तरह से है कि वे किसी रुकावट का जवाब में लिखे गए हैं बनाकर अपने धागे रद्द करने की जरूरत है - जिसका अर्थ है, उनके बाधित झंडा जाँच और InterruptedExceptions को समझदारी से जवाब (न केवल उन्हें खा रहे हैं और जारी है)।

उपर्युक्त सलाह मानती है कि आप नहीं चाहते हैं कि आपके धागे तुरंत जो भी कर रहे हैं उसे छोड़ दें। यदि आप इसके साथ ठीक हैं तो उन्हें डिमन्स बनाएं।

+3

समस्या है कि मैं तीसरे भाग पुस्तकालयों का उपयोग करता हूं जो स्वयं के धागे बनाते हैं। और इन धागे के साथ समस्या है। – user710818

+0

@ user710818: हाँ, यह एक बुरी समस्या है। मुझे आशा है कि पुस्तकालय आपको एक सुंदर शटडाउन करने के लिए कहने के लिए कुछ रास्ता प्रदान करेंगे। –

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