2010-05-20 15 views
9

में System.exit क्या होगा यदि कोई व्यक्ति सर्वलेट में System.exit() लिखता है तो सर्वर या एप्लिकेशन क्रैश होगा?servlet

+5

आप इसे अपने विशेष सर्विसर कंटेनर के साथ क्यों न करें और देखें कि क्या होता है? – Jesper

उत्तर

2

सर्वलेट कंटेनर चलाने वाला JVM समाप्त हो जाएगा, इसलिए, हाँ।

+1

अच्छा, मुझे आशा है कि अधिकांश सुरक्षा प्रबंधक के साथ चलेंगे और इसे प्रतिबंधित करने के लिए कॉन्फ़िगर किया जाएगा। यदि ऐसा है, तो उत्तर संख्या है इसलिए सही उत्तर यह है कि इस पर निर्भर करता है कि कोई सुरक्षा प्रबंधक उपयोग में है या सुरक्षा नीति सही तरीके से कॉन्फ़िगर/प्रतिबंधित है। –

12

शायद! कंटेनर को सुरक्षा प्रबंधक (SecurityManager.checkExit()) में संशोधन करना चाहिए था, इसलिए कॉल का परिणाम AccessControlException हो सकता है। सर्वर को बंद करने में कोई वेबपैप सक्षम नहीं होना चाहिए।

0

खैर, System.exit() वर्तमान चल JVM समाप्त कर देगा। तो यह संभावना है कि सर्वलेट कंटेनर 'addShutdownHook में लिखा गया कोड ट्रिगर किया जाएगा।

-2

System.exit() है कि ब्राउज़र

+0

यह इस तरह से काम नहीं करता है। –

0

नहीं, तुम नहीं है क्योंकि यह एक सुरक्षा अपवाद फेंक कर सकते हैं में विशेष आवेदन बंद हो रहा है।

+0

थोड़ा और स्पष्टीकरण साथी प्रोग्रामर को यह समझने में मदद कर सकता है कि यह कैसे काम करता है या नहीं। – Daenarys

0

https://javarevisited.blogspot.in/2014/11/dont-use-systemexit-on-java-web-application.html से:

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

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