spring boot动态修改es的连接地址

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring boot动态修改es的连接地址相关的知识,希望对你有一定的参考价值。

参考技术A 在项目启动后,使用修改配置文件+restart()连接/连接池对象的方法解决。
使用读写锁,给restart()、setUrl()等代码块加写锁,给数据库操作方法加读锁。这样就可以在修改数据库连接信息时,先获取写锁,保证数据库操作方法不能执行。而在不修改连接时,数据库操作方法之间获取的是读锁,不会影响线程彼此之间的操作。

Spring Boot 2.1.2 创建动态数据库连接只是为了运行查询

【中文标题】Spring Boot 2.1.2 创建动态数据库连接只是为了运行查询【英文标题】:Spring Boot 2.1.2 Create dynamic DB connection just to run a query 【发布时间】:2019-12-30 16:09:24 【问题描述】:

在Spring Boot 2.1.2项目中,application.properties中定义了一个默认的PostgreSQL db连接:

spring.datasource.url=jdbc:postgresql://host:port/dbName
spring.datasource.username=username
spring.datasource.password=pass

Postgre DB 没有任何问题,但是,我很少需要通过 JDBC 连接来连接另一个 DB (MsSql)。 我只需要运行一个查询,并从 mssql 表的视图中处理结果列表。 我尝试的是;

为 Mssql 将 jdbc 驱动程序添加到 Pom.xml:

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>7.2.1.jre11</version>
    <scope>test</scope>
</dependency>

连接到 sql-server 并运行查询:

@GetMapping(path = "/getKonteynersFromSifirAtikServis/", produces = "application/json")
public ResponseEntity<ResponseStatusDto> getKonteynersFromSifirAtikServis() 
    try 
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        dataSource.setUrl("jdbc:mysql://host:1433/msDbName");
        dataSource.setUsername("ms_user");
        dataSource.setPassword("ms_pass");

        JdbcTemplate template = new JdbcTemplate(dataSource);
        SqlRowSet sqlRowSet = template.queryForRowSet("SELECT * FROM dbo.viewName;");

     catch (Exception e) 
        return new ResponseEntity<ResponseStatusDto>(ResponseStatusDto.createErrorDto(e.getMessage(), e), HttpStatus.ACCEPTED);
    

这不起作用。它抛出:

Could not load JDBC driver class [com.microsoft.sqlserver.jdbc.SQLServerDriver]

我一直很难在 pom 定义中加载 mssql-jdbc。已解决制作版本 7.2.1.jre11。

【问题讨论】:

试用版本 7.4.1.jre8 依赖的范围设置为 test 。删除相同并尝试运行 【参考方案1】:

依赖范围设置为test。

test 这个范围表示不需要依赖 应用正常使用,仅供测试使用 编译和执行阶段。这个范围是不可传递的。

删除相同并尝试运行

【讨论】:

上帝保佑你!默认情况下,maven 依赖项是作用域测试,我没有意识到它会阻止访问编译作用域。现在,它可以使用驱动程序,但是,此时,我得到:com.microsoft.sqlserver.jdbc.SQLServerException:端口号 1433/DbName 无效,即使我可以通过 DBeaver 使用相同的设置进行访问。我已经检查过防火墙上启用了 IntelliJ 和 Java 服务... 使用的连接URL是mysql格式。从细节来看,我假设您正在连接到 Microsoft SQL Server。请检查以下 URL 以识别正确的格式:alvinalexander.com/java/…。 db_url = jdbc:microsoft:sqlserver://HOST:1433;DatabaseName=DATABASE 哦..你是对的:jdbc:sqlserver://HOST:1433;databaseName=DBNAME 工作...谢谢。 很高兴能帮上忙!祝你新年快乐

以上是关于spring boot动态修改es的连接地址的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 中的动态服务静态位置

43. Spring Boot动态数据源(多数据源自动切换)从零开始学Spring Boot

连接PostgreSQL数据库的Spring Boot应用程序错误[重复]

Docker,Mongodb,Windows 上的 Spring Boot 出现连接被拒绝错误

Spring Boot集成Spring Scheduler和Quartz Scheduler

使用IntelliJ IDEA创建Spring Boot项目