spring 非法状态例外:无法为创建连接工厂

t1qtbnec  于 2023-01-16  发布在  Spring
关注(0)|答案(1)|浏览(158)

当我尝试与非React性的方法如下,我能够获得连接没有任何问题.

spring.datasource.url=jdbc:sqlserver://AAAAA1011.na.app.corp\\bbbb;databaseName=mydb;integratedSecurity=true;authenticationScheme=JavaKerberos

但是,当我尝试与ReactR2dbc与MsSql服务器的方法如下,然后我面临异常,下面是代码:

@Bean
@Override
public ConnectionFactory connectionFactory() {

    ConnectionFactory connectionFactory = ConnectionFactories.get(ConnectionFactoryOptions.builder()
            .option(ConnectionFactoryOptions.DRIVER, "mssql")
            .option(ConnectionFactoryOptions.HOST, "AAAAA1011.na.app.corp/bbbb")
            .option(ConnectionFactoryOptions.DATABASE, "mydb")
            .option(ConnectionFactoryOptions.USER, "NA\\user")
            .option(Option.valueOf("integratedSecurity"), true)
            .option(Option.valueOf("authenticationScheme"), "JavaKerberos")
            .build());

    return connectionFactory;
}`

异常堆栈跟踪:

org.springframework.beans.BeanInstantiationException: Failed to instantiate [io.r2dbc.spi.ConnectionFactory]: Factory method 'connectionFactory' threw exception; nested exception is java.lang.IllegalStateException: Unable to create a ConnectionFactory for 'ConnectionFactoryOptions{options={database=mydb, host=AAAAA1011.na.app.corp/bbbb, driver=mssql, authenticationScheme=JavaKerberos, integratedSecurity=true, user=NA\user}}'. Available drivers: [ pool, sqlserver ]
    at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:658) ~[spring-beans-5.3.23.jar:5.3.23]

我也找到了这个链接:https://github.com/r2dbc/r2dbc-mssql/issues/101,提到r2dbc似乎不支持Kerberos,但那是2019年写的,现在已经3年了,不确定上面是否有效。
如果有人知道上述问题,你能帮我解决吗

g52tjvyc

g52tjvyc1#

根据异常信息,连接问题是由驱动程序设置引起的。
可用驱动程序:[池,SQL服务器]
尝试将.option(ConnectionFactoryOptions.DRIVER, "mssql")更改为以下内容:

.option(ConnectionFactoryOptions.DRIVER, "sqlserver")

我对R2 dbc/MSSQL中的Kerberos支持知之甚少,请根据官方文档更新自己。

相关问题