आपका मूल कारण, PoolingException: javax.resource.spi.LocalTransactionException: Communications link failure
इस ग्लासफ़िश बग से संबंधित हैए> , जो बताता है (नीचे टिप्पणी टैब में) कि आपको अपने अमान्य कनेक्शन रीफ्रेश करने की आवश्यकता हो सकती है।
जगदीश . द्वारा बग टिप्पणी अपने कनेक्शन सत्यापन प्रकार की जांच करने के लिए कहता है। यदि यह "ऑटोकॉमिट" (डिफ़ॉल्ट) पर सेट है, तो जेडीबीसी ड्राइवर पूर्व कनेक्शन सत्यापन डेटा को कैश कर सकते हैं, और भविष्य के कनेक्शन सत्यापन के दौरान कोई वास्तविक डेटाबेस इंटरैक्शन नहीं होगा।
समस्या को हल करने के लिए, connection-validation-method="table"
और validation-table-name="any_table_you_know_exists"
(any_table_you_know_exists
. को बदलें किसी भी मौजूदा तालिका के नाम के साथ)। ऐसा करने से कनेक्शन कैश के बजाय डेटाबेस से बात करने के लिए बाध्य होते हैं; यदि कनेक्शन अमान्य है, तो इसे हटा दिया जाएगा और फिर से बनाया जाएगा। आपको is-connection-validation-required="true"
भी निर्दिष्ट करने की आवश्यकता हो सकती है ।
अतिरिक्त कॉन्फ़िगरेशन में सहायता के लिए लेख:
- यह लेख समस्या के बारे में भी विस्तार से बताते हैं।
- जगदीश का Oracle ब्लॉग आलेख इस विषय पर अधिक जानकारी है।
- आलेख Glassfish JDBC कनेक्शन सत्यापन को विस्तार से समझाते हुए।
जगदीश के ब्लॉग से पाठ:
AS_INSTALL_ROOT/bin/asadmin set domain.resources.jdbc-connection-pool.DerbyPool.is-connection-validation-required=true
domain.resources.jdbc-connection-pool.DerbyPool.is-connection-validation-required = true
AS_INSTALL_ROOT/bin/asadmin set domain.resources.jdbc-connection-pool.DerbyPool.connection-validation-method=table
domain.resources.jdbc-connection-pool.DerbyPool.connection-validation-method = table
bin/asadmin set domain.resources.jdbc-connection-pool.DerbyPool.validation-table-name=sys.systables
domain.resources.jdbc-connection-pool.DerbyPool.validation-table-name = sys.systables
ध्यान दें कि नमूना कोड sys.systables
. को संदर्भित करता है , जो एक MS SQL तालिका है जिसके अस्तित्व की गारंटी है। Oracle के लिए, गारंटीकृत तालिका देखें dual
. MySQL के लिए, केवल सत्यापन उद्देश्यों के लिए 1-स्तंभ तालिका बनाएं; इसे सुरक्षित रूप से चलाएं और डेटा की एक पंक्ति सम्मिलित करके तालिका को पूर्व-पॉप्युलेट करें।