Tuesday, 15 June 2010

java - Should I close the servlet outputstream? -


संभव डुप्लिकेट:

हूँ मैं HttpServletResponse.getOutputStream () (या getWriter () या यहां तक ​​कि InputStream) को बंद करने के लिए जिम्मेदार या मैं यह कंटेनर से छोड़ देना चाहिए?

  संरक्षित शून्य doGet (HttpServletRequest अनुरोध, HttpServletResponse प्रतिक्रिया) ServletException फेंकता है, IOException {OutputStream ओ = response.getOutputStream (); ... o.close (); //हाॅं नही ? }  

आपको वास्तव में ऐसा करने की आवश्यकता नहीं है।

अंगूठे नियम: यदि आप इसे new SomeOutputStream () का उपयोग करके स्वयं नहीं बनाते हैं, तो आपको खुद को बंद करने की आवश्यकता नहीं है। यदि यह उदाहरण के लिए एक नया FileOutputStream ("c: /foo.txt") था, तो आपको स्पष्ट रूप से इसे स्वयं को बंद करना होगा।

ऐसे कारण हैं कि कुछ लोग अभी भी ऐसा करते हैं सिर्फ यह सुनिश्चित करने के लिए कि प्रतिक्रिया वाले शरीर पर और कुछ भी नहीं लिखा जाएगा यदि यह कभी होगा, तो यह एक appserver लॉग में IllegalStateException कारण होगा, लेकिन यह ग्राहक को प्रभावित नहीं करेगा, इसलिए ग्राहक अभी भी उचित प्रतिक्रिया मिलती है। यह अनुरोध-प्रतिक्रिया श्रृंखला में संभावित समस्याओं को हल करने के लिए एक आसान डिबग भी है जिसे आप पहली नज़र में नहीं देखेंगे। उदाहरण के लिए, कुछ और कहीं आगे श्रृंखला में नीचे प्रतिक्रिया शरीर के लिए और अधिक डेटा जोड़कर किया जाता है।

एक अन्य कारण है जो आप शुरुआत में देखना है कि वे सिर्फ रोकने है कि और अधिक करना चाहता था डेटा प्रतिक्रिया शरीर को लिखा है। आप यह अक्सर देखते हैं जब जेएसपी प्रतिक्रिया में एक भूमिका निभाता है। वे बस लॉग में IllegalStateException s की उपेक्षा करते हैं कहने की जरूरत नहीं है कि इस विशेष उद्देश्य के बुरा


No comments:

Post a Comment