gpt4 book ai didi

java - 以编程方式管理多个 jdbcTemplate

转载 作者:行者123 更新时间:2023-12-01 12:32:55 25 4
gpt4 key购买 nike

我有一个自定义业务需求,其中我需要管理数据库中各种Oracle数据源的详细信息。一旦我的应用程序部署,我就会创建与每个应用程序相对应的 jdbcTemplates。

现在的问题是,如果我使用数据源连接,它会导致太多打开的数据连接,因此数据库拒绝连接并且应用程序崩溃。

我还使用了 SingleConnectionDataSource,但在这种情况下,Spring 在空闲 session 1 或 2 小时后会抛出连接超时错误。

另一个试验是使用 BasicDataSource,但这也导致了应用程序的崩溃。

我维护数据的方式

     BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName(DRIVER_CLASS_NAME);
dataSource.setUrl(CONNECTION_PREFIX + getHost() + ":" + getPort() + ":" + getServiceName());
dataSource.setUsername(getUserName());
dataSource.setPassword(getPassword());
dataSource.setInitialSize(15);
dataSource.setMinIdle(20);
dataSource.setMaxIdle(100);
dataSource.setMaxActive(150);
dataSource.setMaxWait(6000);
dataSource.setRemoveAbandoned(true);
dataSource.setRemoveAbandonedTimeout(30000);
dataSource.setLogAbandoned(true);
dataSource.setTestOnBorrow(true);
dataSource.setTestOnReturn(false);
dataSource.setTestWhileIdle(true);
dataSource.setTimeBetweenEvictionRunsMillis(30000);
dataSource.setMinEvictableIdleTimeMillis(30000);
dataSource.setMinEvictableIdleTimeMillis(30000);
dataSource.setValidationQuery("SELECT 1 from dual");

JdbcTemplate template = new JdbcTemplate(dataSource);

Note that i am creating multiple jdbcTemplates in this way and maintaining them in a HashMap. Data source details are also coming from a database table

This is because the front application will actually decide which particular data source will be used to be used for performing the DB operation.

请建议我一个更好的方法,或者解决现有的超时/空闲连接问题!!

最佳答案

我建议使用连接池。可以设置初始连接数、总连接数限制以及数十个其他选项。

看看here .

关于java - 以编程方式管理多个 jdbcTemplate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25801441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com