当前位置: 首页 > 知识库问答 >
问题:

Spring4日Hikari连接池ClassCast异常

闻人博
2023-03-14

我希望在我的Spring 4应用程序中使用Hikari连接池。数据库是Google CloudSQLPostgres数据库。

我在pom中有以下依赖项。xml:

    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>42.1.1</version>
    </dependency>

    <dependency>
        <groupId>com.zaxxer</groupId>
        <artifactId>HikariCP</artifactId>
        <version>3.3.1</version>
    </dependency>

在我的申请Context.xml,我有:

<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
    <property name="poolName" value="springHikariCP" />
    <property name="connectionTestQuery" value="SELECT 1" />
    <property name="dataSourceClassName" value="org.postgresql.Driver" />
    <property name="maximumPoolSize" value="10" />
    <property name="idleTimeout" value="30000" />

    <property name="dataSourceProperties">
        <props>
            <prop key="url">jdbc:postgresql://google/mydatabase?cloudSqlInstance=projectId:regionName:myInstance&amp;socketFactory=com.google.cloud.sql.postgres.SocketFactory</prop>
            <prop key="user">postgres</prop>
            <prop key="password">mypassword</prop>
        </props>
    </property>
</bean>


<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
    <constructor-arg ref="hikariConfig" />
</bean>

但是我得到了以下例外:

Caused by: java.lang.ClassCastException: Cannot cast org.postgresql.Driver to javax.sql.DataSource
        at java.lang.Class.cast(Class.java:3369)
        at com.zaxxer.hikari.util.UtilityElf.createInstance(UtilityElf.java:102)

出了什么问题?

共有2个答案

平山
2023-03-14

使用Hikari推荐的PostgreSQL:org数据源。postgresql。ds。PGSimpleDataSource

 <property name="dataSourceClassName" value="org.postgresql.ds.PGSimpleDataSource" />

数据库驱动程序数据源类

PostgreSQL pgjdbc ng com。不可能。博士后。jdbc。PGDataSource PostgreSQL PostgreSQL org。postgresql。ds。PGSimpleDataSource

澹台俊达
2023-03-14

org。postgresql。jdbc。驱动程序不是javax。sql。数据源,它是一个java。sql。驱动程序,因此它不适用于属性dataSourceClassName,因为该属性需要一个javax。sql。数据源类名。

如果要使用驱动程序(而不是数据源),则应使用属性drivercassname

所以:

<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
    <property name="poolName" value="springHikariCP" />
    <property name="connectionTestQuery" value="SELECT 1" />
    <property name="driverClassName" value="org.postgresql.Driver" />
...
 类似资料:
  • 我有一个spring boot(2.4)应用程序,在长时间运行的jpa事务下,我看到很多连接超过了我的最大池大小,当我检查日志时,我看到连接被省略了,在新的HikariPools 2-3-4等之后。。。都打开了。我试过hikari 4.0。2个版本,但仍然是相同的问题。在这个场景中,给出最大池大小的含义是什么(每个池看起来都是我的最大池大小,但总连接数超过了我的限制)。是否有限制期初池数的配置?我

  • 我的服务器上有一个Spring启动项目。我有时会遇到“Hikari池连接不可用”错误。我想不出原因。我看起来有很多这样的问题。一些人建议关闭一些@交易。但是,在我的应用程序中,我没有使用任何@Transactional注释。以下是我的Hikari池配置: 当我检查我的卡塔琳娜。在日志文件外,我注意到活动连接数有时会增加。例如,昨天没有活动的连接。所有连接都处于空闲状态。现在池中有2个活动连接。是否

  • 我使用具有以下设置的Hikary连接池: 在getConnection()之后,hikari尝试获取到实例的2个连接,但只将一个连接放在连接池中。我怎样才能修好它?hikari版本是

  • Hikari:2.4.7 PostgreSQL JDBC驱动程序:9.4-1201-jdbc41 我试图理解必须对java.sql做些什么。对象以使其在连接池中再次可用? 我刚刚将连接池引入了一个多线程应用程序,该应用程序以前使用每个SQL语句建立/拆除连接。 在介绍Hikari之后,我注意到,一旦我点击,此后每次尝试都会由于而失败。所以看起来我没有以某种方式“释放”这个连接。 连接对象的典型用法

  • 问题内容: 我正在尝试为我的Web应用程序配置HikariCP。我没有使用任何框架,它是一个简单的简单Java Web应用程序。当我尝试通过普通的JDBC建立连接时,它成功了,并且能够执行所有数据库操作。 但是,当我尝试与连接池建立连接时,初始化后却收到了一个我不知道的异常。 下面是我正在使用的配置,我正在上下文侦听器中对其进行初始化。我在Java 1.7上运行,带有使用HikariCP Java