2013-05-21 8 views
6

मैं निम्नलिखित दो ओरेकल डीबीएस से कनेक्ट कर त्रुटियों पर इस समस्या का अनुसंधान करने के लिए कोशिश कर रहा हूँ का समय समाप्त: java.sql.SQLException: आईओ अपवाद: सॉकेट पढ़ने बनाम बंद कनेक्शन

  • java.sql.SQLException

    1. बंद कनेक्शन: आईओ अपवाद: सॉकेट पढ़ने का समय समाप्त हो

    मेरे समझ:

    1. बंद रहता है कनेक्शन: या तो ऐसा हो रहा है क्योंकि कुछ प्रकार के नेटवर्क व्यवधान या डीबी ने कुछ प्रकार की "निष्क्रियता"
    2. java.sql.SQLException: आईओ अपवाद: सॉकेट पढ़ने का समय समाप्त हो गया: यह एक ऐसा मामला है जहां कनेक्शन सफलतापूर्वक बनाया गया था लेकिन किसी कारण से सॉकेट/डेटा खाली था और आखिरकार यह समय समाप्त हो गया क्योंकि कोई डेटा उपलब्ध नहीं था।

    क्या स्थानीय ओरेकल डीबी एनवी में उपर्युक्त त्रुटियों को दोहराना संभव है? क्या कदम हैं?

    मैं आपको जवाब देने का समय लेने की सराहना करता हूं।

    धन्यवाद।

  • उत्तर

    0

    मैंने अभी java.sql। * पैकेज के साथ काम करना शुरू कर दिया है, लेकिन यहां मैं समझता हूं। एक बंद कनेक्शन एक त्रुटि होती है जो होता है और डीबी सत्र बंद हो जाता है, लेकिन कोई त्रुटि प्रबंधन नहीं किया जाता है, जिससे इसका अंत होता है। जावा.क्यूएक्सप्शन के साथ आप इस त्रुटि को प्रबंधित कर सकते हैं (फेंकने वाले खंड का उपयोग करें) और इसे प्रिंट करें या अन्य त्रुटि हैंडलिंग विधियों को करें।

    यहां ओरेकल से अपवादों के बारे में एक लिंक है और उन्हें कैसे संभालना है।

    उम्मीद है कि इससे मदद मिलती है।

    Exceptions in Java.

    +0

    इनपुट के लिए धन्यवाद। बंद कनेक्शन त्रुटि के लिए, मैं यह पता लगाने की कोशिश कर रहा हूं कि क्या डीबी कनेक्शन और नेटवर्क में अशांति को बंद करने के बीच अंतर है, चाहे दोनों एक ही त्रुटि प्रदान करते हैं या यदि कोई भेद है। साथ ही, मेरा मानना ​​है कि दोनों ही अपवाद हैं 'java.sql.SQLRecoverableException: बंद कनेक्शन' सॉकेट टाइम अपवाद के बारे में भी, इसके बारे में "नेटवर्क" व्यवधान जैसे विशिष्ट कारण क्या हैं। – kart0624

    +0

    @ kart0624 मुझे इसके बारे में निश्चित नहीं है। यह देखने के लिए त्रुटि कोड लॉग इन करने का प्रयास करें कि वे अलग हैं या नहीं। जाहिर है वे विभिन्न कारणों से होते हैं लेकिन वे एक ही त्रुटि कोड का उपयोग कर सकते हैं या नहीं। जावा में लॉग इन करने के बारे में कुछ जानकारी यहां दी गई है यदि आप इससे परिचित नहीं हैं। [कड़ी] (http://www.vogella.com/articles/Logging/article.html) –

    1

    बंद कनेक्शन पर आपकी समझ सही है। बंद कनेक्शन के कारण: फ़ायरवॉल, नेटवर्क डिवाइस और रिमोट डेटाबेस श्रोताओं जैसे बाहरी डिवाइस निष्क्रियता की अवधि के बाद बंद होने के लिए नेटवर्क कनेक्शन को मजबूर कर सकते हैं

    ReadTimeOut सक्रिय कनेक्शन पर भी होगा। यदि कोई प्रश्न या प्रक्रिया बहुत समय ले रही है, तो आपको अपवाद को पढ़ने का समय मिल जाएगा।

    • बंद कनेक्शन: शटडाउन डेटाबेस श्रोता जब डेटाबेस चल रहा है
    • ReadTimedOut: आवेदन सॉकेट की

    प्रतिकृति से 10 से अधिक मिनट के लिए प्रक्रिया में नींद जोड़े और उस प्रक्रिया कॉल ओरेकल डीबी एनवी में त्रुटि का समय पढ़ें:

    1. एसक्यूएल connection के लिए// उदाहरण के लिए, सेट के रूप में 120 सेकंड
    2. कॉल एक डेटाबेस और अधिक समय के लिए है कि प्रक्रिया में जावा और नींद से प्रक्रिया setNetworkTimeout से

      dbms_lock.sleep(125); -- sleeps for 125 seconds 
      

    के बाद से प्रक्रिया नहीं लौटा रहा है टाइमआउट 125 सेकंड की नींद के कारण 120 सेकंड में, जावा ऊपर के परिदृश्य में सॉकेट रीड टाइम फेंक देगा।

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