我有一个使用ExecutorService(15个线程)多线程的java进程。每个线程调用存储过程以将数据插入表中,而我的连接要在15个线程之间进行缓冲,这样我就可以同时在表上看到多个提交,但是即使只有15个线程,我也只能看到为一个活动线程建立了一个连接。准备和等待。

驱动程序: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具有易于使用且来自oracle的通用连接池(ucp.jar)。您只需要在类路径中包括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();

09-06 00:37