gpt4 book ai didi

java - 多线程 Java 程序中的 Oracle DB 连接池

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

我有一个使用 ExecutorService 的多线程 java 进程(15 个线程)。每个线程调用存储过程将数据插入到表中,我的连接将跨 15 个线程进行池化,以便我可以同时看到表上的多个提交,但即使通过 15 个线程,我也只能看到为一个 Activity 线程建立的一个连接准备就绪并等待。

驱动程序: oracle.jdbc.driver.OracleDriver

以下是我的属性文件中的连接详细信息网址、用户名、密码

Class.forName(DB_DRIVER); 

DataSource oracleDataSource = new DriverManagerDataSource(DB_CONNECTION, DB_USER,DB_PASSWORD);

ObjectPool objectPool = new GenericObjectPool();

DataSourceConnectionFactory datasourceConnectionFactory = new DataSourceConnectionFactory(oracleDataSource);

PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(datasourceConnectionFactory, objectPool, null, null, false, true);
objectPool.setFactory(poolableConnectionFactory);

PoolingDataSource datasource = new PoolingDataSource(objectPool)

最佳答案

Oracle 有通用连接池 (ucp.jar),它易于使用,来自 Oracle。您所需要做的就是将 ucp.jar 与 ojdbc6.jar 或 ojdbc7.jar 一起包含在类路径中。

请参阅 UCP 引用指南:http://docs.oracle.com/database/121/JJUCP/toc.htm

PoolDataSource pds = PoolDataSourceFactory.getPoolDataSource();
pds.setConnectionFactoryClassName("oracle.jdbc.pool.OracleDataSource");
pds.setMinPoolSize(10);
pds.setMaxPoolSize(50);
Connection conn=pds.getConnection();

关于java - 多线程 Java 程序中的 Oracle DB 连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28308700/

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