2009-07-20 15 views
9

मेरे पास एक मशीन है जो एक जावा ऐप चला रही है जो एक ही उदाहरण पर चल रहे एक MySQL उदाहरण से बात कर रही है। ऐप mysql से jdbc4 ड्राइवर का उपयोग करता है। मैं यादृच्छिक समय पर com.mysql.jdbc.exceptions.jdbc4.CommunicationsException प्राप्त करना जारी रखता हूं।jdbc4 संचार अपवाद

यहां पूरा संदेश है।

लेनदेन के लिए जेडीबीसी कनेक्शन नहीं खोल सका; नेस्टेड अपवाद

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was25899 milliseconds ago.The last packet sent successfully to the server was 25899 milliseconds ago, which is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem. 

MySQL के लिए है, वैश्विक 'wait_timeout' और 'interactive_timeout' का मान 3600 सेकंड के लिए सेट है और 'connect_timeout' 60 सेकेंड के लिए निर्धारित है। प्रतीक्षा टाइमआउट मान 26 सेकंड (258 99 एमसीईसी) से काफी अधिक है। अपवाद ट्रेस में उल्लिखित।

मैं कनेक्शन पूलिंग के लिए डीबीसीपी का उपयोग करता हूं और यहां डेटा स्रोत के लिए वसंत बीन कॉन्फ़िगरेशन है।

<bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource" > 
      <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
        <property name="url" value="jdbc:mysql://localhost:3306/db"/> 
       <property name="username" value="xxx"/> 
       <property name="password" value="xxx" /> 
        <property name="poolPreparedStatements" value="false" /> 
      <property name="maxActive" value="3" /> 
      <property name="maxIdle" value="3" /> 
    </bean> 

कोई विचार यह क्यों हो रहा है? C3p0 समस्या का समाधान करेंगे?

उत्तर

6

अपाचे कॉमन्स डीबीसीपी को सही तरीके से स्थापित करने का प्रयास करें। चयन करने के लिए सही

को 1 + 1

  • testOnBorrow कि इस समस्या को ठीक करना चाहिए

    • validationQuery:

      आप सेट करना होगा।

  • +0

    Thnx, ऐसा लगता है कि इस समय काम कर रहा है। – letronje

    0

    मैं अपवाद में सलाह का पालन करता हूं। आप पर विचार करना चाहिए या तो:

    1. समाप्त हो रही है और/या अपने आवेदन में उपयोग करने से पहले कनेक्शन मान्यता की जांच,
    2. बढ़ती सर्वर कॉन्फ़िगर किया गया या
    3. ग्राहक समय समाप्ति के लिए मूल्यों, कनेक्टर/जम्मू कनेक्शन संपत्ति 'का उपयोग कर autoReconnect = सच है 'इस समस्या से बचने के लिए। इसे अपने कनेक्शन यूआरएल में जोड़ने का प्रयास करें (सटीक वाक्यविन्यास के लिए दस्तावेज़ों से परामर्श लें) और देखें कि यह मदद करता है या नहीं।

    मुझे संदेह है कि सी 3 पी 0 डीबीसीपी की तुलना में काफी बेहतर होगा जिसका आप पहले से उपयोग कर रहे हैं। अपवाद आपको कुछ विशिष्ट सलाह दे रहा है। आपने # 3 की कोशिश की है। दूसरे दो के बारे में क्या?

    मुझे पता है कि वेबलोगिक से उनसे संपर्क करने से पहले कनेक्शन जांचने के लिए कैसे पूछें। आपको पता होना चाहिए कि टोमकैट के साथ ऐसा कैसे करना है।

    +0

    ने इसे आजमाया, अब "लेनदेन के लिए जेडीबीसी कनेक्शन नहीं खोल सका; नेस्टेड अपवाद com.mysql.jdbc.exceptions है।jdbc4.CommunicationsException: संचार लिंक विफलता " – letronje

    1

    क्या आप वर्णन कर सकते हैं कि आपका ऐप कनेक्शन पूलिंग को कैसे प्रबंधित कर रहा है? मुझे संदेह है कि जेडीबीसी ड्राइवर में autoReconnect = true आपके ऐप से कनेक्शन फिर से पूल करेगा। जब कनेक्शन बंद हो जाता है तो ऐप को फिर से कनेक्ट करने की आवश्यकता होती है।

    0

    मैंने देखा है कि विंडोज मशीनों को नेटवर्क पर ले जाया गया है, उन्हें खुद से जुड़ने में परेशानी है।

    क्या JVM के बाहर कोई कनेक्टिविटी समस्या है - यानी mysql क्लाइंट सर्वर से कनेक्ट हो रहा है, और समय समाप्त हो रहा है आदि?

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