विधि org.postgresql.jdbc4.Jdbc4Connection.isValid(int) अभी तक लागू नहीं किया गया है




apache-commons-dbcp (2)

यह तरीका मौजूदा ड्राइवर संस्करण में लागू किया गया है। आपको एक पुराने पीजीजेडीबीसी का प्रयोग करना चाहिए। अपग्रेड करें। यह पूरी तरह से पिछड़े संगत है (आपको अपने PgJDBC संस्करण को प्रश्न में निर्दिष्ट करना चाहिए)।

अलग से, हालांकि, कनेक्शन पर निर्भर "सत्यापन" आमतौर पर एक बुरा विचार है यह एक तरह से एक शर्त की स्थिति को अपूर्ण रूप से छिपाने की कोशिश करने का एक तरीका है बस कनेक्शन को पकड़ो और इसका इस्तेमाल करें अगर इसके साथ कोई समस्या है, तो आपके आवेदन को परिणामस्वरूप अपवाद फंस जाना चाहिए, यह देखने के लिए कि क्या यह एक कनेक्शन संबंधित त्रुटि है, और एक नया कनेक्शन के साथ पुनः प्रयास करें, SQLSTATE को जांचें।

मैं पोस्टग्रेज़ 9.1 के साथ डीबीसीपी 2 को कॉन्फ़िगर करने की कोशिश कर रहा हूं

जब मैं अपना ऐप चलाता हूं, तो यह अपवाद फेंकता है:

Exception in thread "main" org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Cannot create PoolableConnectionFactory (Method org.postgresql.jdbc4.Jdbc4Connection.isValid(int) is not yet implemented.)
    at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:575)
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:639)
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:664)
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:704)
    at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.queryForObject(NamedParameterJdbcTemplate.java:195)
    at com.springinpractice.ch02.service.impl.ContactServiceImpl.getContact(ContactServiceImpl.java:64)
    at com.springinpractice.ch02.ConsoleApp.main(ConsoleApp.java:16)
Caused by: java.sql.SQLException: Cannot create PoolableConnectionFactory (Method org.postgresql.jdbc4.Jdbc4Connection.isValid(int) is not yet implemented.)
    at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:2152)
    at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:1903)
    at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1413)
    at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111)
    at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)
    ... 7 more
Caused by: org.postgresql.util.PSQLException: Method org.postgresql.jdbc4.Jdbc4Connection.isValid(int) is not yet implemented.
    at org.postgresql.Driver.notImplemented(Driver.java:753)
    at org.postgresql.jdbc4.AbstractJdbc4Connection.isValid(AbstractJdbc4Connection.java:109)
    at org.postgresql.jdbc4.Jdbc4Connection.isValid(Jdbc4Connection.java:21)
    at org.apache.commons.dbcp2.DelegatingConnection.isValid(DelegatingConnection.java:914)
    at org.apache.commons.dbcp2.PoolableConnection.validate(PoolableConnection.java:227)
    at org.apache.commons.dbcp2.PoolableConnectionFactory.validateConnection(PoolableConnectionFactory.java:303)
    at org.apache.commons.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:2165)
    at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:2148)
    ... 11 more

यहाँ मेरा मेवेन पीओएम है:

<dependencies>
    <!-- Spring and Transactions -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring-framework.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>${spring-framework.version}</version>
    </dependency>

    <!-- Logging with SLF4J & LogBack -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>${logback.version}</version>
        <scope>runtime</scope>
    </dependency>

    <!-- Hibernate -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>${hibernate.version}</version>
    </dependency>


    <!-- Test Artifacts -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring-framework.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
    </dependency>

    <!-- For JDBC -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${spring-framework.version}</version>
    </dependency>

    <dependency>
        <groupId>postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>9.1-901.jdbc4</version>

    </dependency>

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-dbcp2</artifactId>
        <version>2.0.1</version>
    </dependency>
    <dependency>
        <groupId>javax.inject</groupId>
        <artifactId>javax.inject</artifactId>
        <version>1</version>
    </dependency>

</dependencies>

समाधान: पैरामीटर "मान्यकरण क्वेरी" के लिए एक सत्यापन क्वेरी सेट करें

बीन के लिए उदाहरण: गुण नाम = "सत्यापन" मान = "चयन 1"

यह सत्यापन क्वेरी इसे वापस करने से पहले कनेक्शन के खिलाफ चलाया जाता है। इसलिए एक वैध प्रश्न है, ऊपर एक डमी है

https://commons.apache.org/proper/commons-dbcp/configuration.html