2009-09-10 15 views
7

मैं समय पर निम्न अपवाद:जावा JDBC: Reply.fill()

com.ibm.db2.jcc.b.gm: [जेसीसी] [टी -4] [2030] [11211] [ 3.50.152] कनेक्शन की अंतर्निहित सॉकेट, सॉकेट इनपुट स्ट्रीम, या सॉकेट आउटपुट स्ट्रीम पर संचालन के दौरान एक संचार त्रुटि आई। त्रुटि स्थान: उत्तर। भरें()। संदेश: कनेक्शन रीसेट। ERRORCODE = -4499, SQLSTATE = 08001

समस्या यह है कि, कोड पिछले कुछ समय से सफलतापूर्वक कार्यान्वित और फिर अचानक मैं इस अपवाद है। हालांकि जब मैं कोड फिर से चलाता हूं तो यह सही ढंग से चलता है।

क्या कोई मुझे बता सकता है कि क्या गलत हो सकता है और मुझे इसे हल करने के लिए कुछ पॉइंटर्स प्रदान कर सकते हैं।

+0

कृपया इस लिंक को भी देखें http://www-01.ibm.com/support/docview.wss?uid=swg21962086 और http://www-01.ibm.com/support/docview.wss?uid = swg21600160 –

उत्तर

0

ऐसा लगता है कि आपका कनेक्शन समय समाप्त हो रहा है। मैं वास्तव में नहीं हूं जहां समस्या है। यह आपके डीबी सर्वर के कनेक्शन के साथ हो सकता है। मुझे खेद है कि मैं आपकी मदद नहीं कर सकता, लेकिन मुझे आशा है कि इससे मदद मिलती है।

3

यह जेडीबीसी संसाधनों को ठीक से बंद/जारी करने का संकेत नहीं है। आपको और को सबसे कम संभव दायरे में सभी जेडीबीसी संसाधनों को बंद करने की आवश्यकता है, यानी आपको finallytry ब्लॉक के उसी विधि ब्लॉक ब्लॉक के ब्लॉक को ब्लॉक करने की आवश्यकता है जैसा आपने उन्हें हासिल किया है। जैसे

Connection connection = null; 
Statement statement = null; 
ResultSet resultSet = null; 
try { 
    connection = database.getConnection(); 
    statement = connection.createStatement(); 
    resultSet = statement.executeQuery(SQL); 
    // ... 
} finally { 
    if (resultSet != null) try { resultSet.close(); } catch (SQLException logOrIgnore) {} 
    if (statement != null) try { statement.close(); } catch (SQLException logOrIgnore) {} 
    if (connection != null) try { connection.close(); } catch (SQLException logOrIgnore) {} 
} 

आप ठीक ढंग से जितनी जल्दी हो सके उन्हें बंद नहीं करते हैं, डीबी यह अपने हाथों में अभी या बाद में ले जाएगा और के रूप में आप अपने आप को सामना करना पड़ा अपने आवेदन अभी या बाद में टूट सकता है।

कनेक्टिंग प्रदर्शन में सुधार करने के लिए, कनेक्शन पूल का उपयोग करें - आपको अभी भी ऊपर की तरह ही उन्हें प्राप्त करने और बंद करने की आवश्यकता है! यह सिर्फ कनेक्शन पूल कार्यान्वयन है जो हुड के तहत वास्तव में कनेक्शन बंद करने या नहीं के बारे में चिंताओं के तहत चिंता करता है।

+1

उम्मीद है कि जावा 7 में प्रयास-संसाधन-संसाधन ब्लॉक भविष्य में इनमें से कुछ को कम करने में मदद करेगा। यद्यपि मेरे यहां एक हिस्सा है जो डेवलपर्स को संसाधनों की सफाई न करने की अनुमति देने के बारे में डर से शटर करता है। मुझे डर है कि यह मैला विकास का कारण बन सकता है। और फिर क्या होता है यदि उन डेवलपर्स को प्री-जेआरई 7 कोड पर काम करना है? बस अपने जवाब के जवाब में जोर से सोच रहा है। लेकिन जवाब पर निश्चित रूप से ++। –

+1

@ क्रिस: निश्चित रूप से एआरएम 'क्लोज़()' -इन-'अंतिम रूप से बॉयलरप्लेट को कम करने में बहुत मदद करेगा। हालांकि, आप जेपीए के लिए भी जा सकते हैं जो बदले में पूरे जेडीबीसी बॉयलरप्लेट को ऑनलाइनर में कम कर देता है। – BalusC

+1

दिलचस्प। क्या आप जेपीए बनाम शुद्ध जेडीबीसी पर किसी भी लेख के बारे में जानते हैं।मुझे लगता है कि मैं अनुभव से आ रहा हूं जहां अमूर्त परतों ने कभी-कभी हमारे आवेदन को खराब और कठिन बनाने के लिए कठिन बना दिया है। मैंने शुद्ध जेडीबीसी बहुत सरल पाया (कम से कम जब केवल शुद्ध एसक्यूएल तारों के साथ काम करते हैं)। मैं देख सकता हूं कि ऑब्जेक्ट्स के साथ यह बेहतर काम करेगा। और यह आपके लिए बंद संसाधन को संभालता है? –

0

मैं इस कम से कम हमारे लिए यह है द्वारा https://www-304.ibm.com/support/docview.wss?uid=swg1IC63952

कारण हो सकता है लगता है।

इस डिस्कनेक्शन मिलने पर ZRC=0x8005006D=-2147155859=SQLE_CA_BUILT "SQLCA has been built and saved in component specific control block." त्रुटि संदेशों के लिए अपने db2diag.log की जांच करें।

इस सप्ताह के अंत में हम डीबी 2 9.7 फिक्सपैक 3 ए में अपग्रेड करने की योजना बना रहे हैं - अगर इससे मदद मिलेगी तो वापस लिखेंगे।

1

हमें हाल ही में इस मुद्दे का सामना करना पड़ रहा है, और यह भ्रमित और OR और rownum < खंड के साथ खंडों के कारण था। सही जगहों पर ब्रेसिज़ लगाकर इसे हल किया गया।

+1

यह पोस्ट शड एक टिप्पणी है, जवाब नहीं – Chani

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