2010-05-29 16 views
5

मेरे जावा अनुप्रयोग है, जो हाइबरनेट का उपयोग करता है और यह बिलाव 6.0 ने होस्ट किया है, निष्क्रियता के एक लंबे समय के बाद निम्न अपवाद होता है जब उसे डीबी तक पहुँचने के लिए कोशिश करता है:बिलाव, हाइबरनेट और java.io.EOFException

com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.io.EOFException 

STACKTRACE: 

java.io.EOFException 
    at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1963) 
    at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2375) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2874) 
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1623) 
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1715) 
    at com.mysql.jdbc.Connection.execSQL(Connection.java:3249) 
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1268) 
    at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1403) 
    at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208) 
    at org.hibernate.loader.Loader.getResultSet(Loader.java:1812) 
    at org.hibernate.loader.Loader.doQuery(Loader.java:697) 
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259) 
    at org.hibernate.loader.Loader.doList(Loader.java:2232) 
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2129) 
    at org.hibernate.loader.Loader.list(Loader.java:2124) 
    at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401) 
    at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363) 
    at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196) 
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1149) 
    at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102) 

कोई सुझाव?

धन्यवाद

+0

त्रुटि से अच्छी तरह से निर्णय लेना, इस पृष्ठ को क्या कहना है http://java.sun.com/j2se/1.4.2/docs/api/java/io/EOFException.html और लंबे समय तक यह होगा ऐसा लगता है कि किसी भी कारण से आपका ऐप/हाइबरनेट आपके डीबी से कनेक्ट करने में असमर्थ है। डीबी यूआरएल, बंदरगाह, और लॉगिन विवरण की जांच करें। –

+0

ऐसा लगता है कि कनेक्शन समाप्त होने पर हाइबरनेट डीबी से फिर से कनेक्ट करने में सक्षम नहीं है। क्योंकि पहले यह काम करता है, फिर एक लंबी निष्क्रियता के बाद अपवाद फेंक दिया जाता है। – Mark

+0

आह ठीक है यह एक विन्यास विकल्प है। आप जेडीबीसी को फिर से कनेक्ट करने के लिए प्राप्त कर सकते हैं लेकिन शीर्ष सिर से उत्तर नहीं पता, एक Google http://www.google.com/search?hl=hi&q=jdbc+hibernate+reconnect आज़माएं –

उत्तर

3

MySQL डिफ़ॉल्ट रूप से 8 घंटे (wait_timeout) के बाद निष्क्रिय कनेक्शन बंद हो जाएगा। यह एक "प्रसिद्ध समस्या" है और आपको इंटरनेट पर इसके कई संदर्भ मिलेंगे, उदाहरण के लिए this one। तो या तो: डेटा स्रोत विन्यास में एक validationQuery का उपयोग कर उधार पर कनेक्शन का परीक्षण करने के

  • कॉन्फ़िगर बिल्ला:

    <parameter> 
        <name>validationQuery</name> 
        <value>select 1</value> 
    </parameter> 
    
  • वृद्धि MySQL के wait_timeoutmy.cnf/my.ini के माध्यम से, या एक कमांड लाइन एसक्यूएल ग्राहक के साथ जोड़ने के द्वारा और SET GLOBAL wait_timeout=86400, या कुछ अन्य उपयुक्त संख्या में प्रवेश करना।

ध्यान दें कि मुझे दूसरे विकल्प के सभी परिणामों के बारे में पता नहीं है। यदि आप दूसरा विकल्प तरीका तय करने का निर्णय लेते हैं, तो मैं माईएसQL विशेषज्ञों से प्रतिक्रिया प्राप्त करने के लिए एक और प्रश्न पोस्ट करने का सुझाव दूंगा।

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