Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर 2012 के साथ जावा हाइबरनेट काम नहीं कर रहा है?

आपकी समस्या यह है कि jTDS डिफ़ॉल्ट रूप से DBCP2 कनेक्शन को मान्य करने के तरीके का समर्थन नहीं करता है (मैं मान रहा हूँ कि आप DBCP2 का उपयोग <bean id="dataSource" class="org.apache.tomcat.dbcp.dbcp2.BasicDataSource"> ) समाधान नीचे देखें।

आमतौर पर त्रुटि स्टैकट्रेस जैसा दिखाया गया है:

Caused by: java.lang.AbstractMethodError
    at net.sourceforge.jtds.jdbc.JtdsConnection.isValid(JtdsConnection.java:2833)
    at org.apache.tomcat.dbcp.dbcp2.DelegatingConnection.isValid(DelegatingConnection.java:913)

समस्या, हालांकि, SQL सर्वर संस्करण से संबंधित नहीं है, लेकिन उपयोग किए गए DBCP (Tomcat) संस्करण (या टॉमकैट सर्वर संस्करण जिस पर प्रोजेक्ट परिनियोजित किया गया है) से संबंधित है।

एक बार जब मैं jTDS 1.3.1 का उपयोग कर रहा था और प्रोजेक्ट ने ठीक काम किया (और SQLServer 2012 से भी जुड़ा) Tomcat7 के तहत। जब मैं टॉमकैट 8 में बदल गया, तो वह त्रुटि दिखाई दी।

कारण, जैसा कि jTDS फ़ोरम में संकेत दिया गया है , है:

  • (Tomcat7 DBCP 1 का उपयोग करता है और Tomcat 8 DBCP 2 का उपयोग करता है )
  • DBCP 1.x के विपरीत , डीबीसीपी 2 कॉल करेगा java.sql.Connection.isValid(int) कनेक्शन सत्यापित करने के लिए
  • jTDS .isValid() लागू नहीं करता है , इसलिए jTDS ड्राइवर DBCP 2 के साथ काम नहीं करेगा, जब तक कि...
  • ...जब तक आप validationQuery सेट नहीं करते हैं पैरामीटर, जो DBCP को .isValid() . कॉल नहीं करेगा कनेक्शन की वैधता का परीक्षण करने के लिए।

समाधान

तो, समाधान validationQuery सेट करना है पैरामीटर , जो DBCP2 को .isValid() . कॉल नहीं करेगा कनेक्शन की वैधता का परीक्षण करने के लिए। यहां बताया गया है:

टॉमकैट पर

validationQuery="select 1" Add जोड़ें अपने टॉमकैट <Resource> के लिए कनेक्शन पूल के लिए टैग, जो आमतौर पर META-INF/context.xml . में होता है आपके ऐप का या conf/server.xml :

<Resource ... validationQuery="select 1" />

वसंत पर

स्प्रिंग के माध्यम से DBCP2 का उपयोग करते समय, समाधान कुछ इस प्रकार है:

<bean id="..." ...> 
    ...
    <property name="validationQuery" value="select 1" />
</bean>

साधारण जावा कोड पर

dataSource.setValidationQuery("select 1"); 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्वेरी एसक्यूएल सर्वर 2005 द्वारा बिट प्रकार को हां या नहीं में कनवर्ट करें

  2. क्या पहचान के साथ कई पंक्तियों को सम्मिलित करते समय ऑर्डर की गारंटी है?

  3. SQL सर्वर 2005 त्रुटि 701 - स्मृति से बाहर

  4. पहला नाम और अंतिम नाम निकालना

  5. पहले कोड का उपयोग करने के बाद एंटिटी फ्रेमवर्क डेटाबेस स्कीमा मैप बदलें