作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在我的 Tomcat contex.xml 文件中,我有这个数据源声明:
<Resource name="jdbc/my_ds" auth="Container" factory="oracle.ucp.jdbc.PoolDataSourceImpl"
type="oracle.ucp.jdbc.PoolDataSource" description="UCP Pool in Tomcat"
connectionFactoryClassName="oracle.jdbc.pool.OracleDataSource" minPoolSize="1" maxPoolSize="10"
initialPoolSize="2" inactiveConnectionTimeout="20" setMaxIdleTime="1800"
user="my_user" password="my_password"
url="jdbc:oracle:thin:@mydb.com:1234:DATABASEID" connectionPoolName="MY_UCPPool"
connectionProperties="defaultBatchValue=7000,defaultRowPrefetch=7000" validateConnectionOnBorrow="true"/>
但是在我的 DAO 代码中,当我检查提取大小时它没有按预期返回 7000:
if (s.getFetchSize() < 100) {
log.warn("fetch size is too small: " + s.getFetchSize());
}
最佳答案
在对PoolDataSourceImpl类进行反编译后,发现了这段代码:
propStrs = cfPropsStr.substring(1, cfPropsStr.length() - 1).split(", ");
当它正在解析 connectionProperties 的内容时。
这意味着:
所以你只需要改变声明:
connectionProperties="defaultBatchValue=7000,defaultRowPrefetch=7000"
到:
connectionProperties=" defaultBatchValue=7000, defaultRowPrefetch=7000 "
甚至:
connectionProperties="_defaultBatchValue=7000, defaultRowPrefetch=7000_"
注意开头和结尾不需要空格,可以是任意字符。
使用初始配置,结果将是键“efaultBatchValue”和值“7000,defaultRowPrefetch=700”。
关于java - 为什么 Oracle 的 PoolDataSource 忽略 connectionProperties 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30626131/
我似乎有内存泄漏,罪魁祸首之一似乎是 ConnectionProperty,无论是 String、Int 还是 Boolean。例如:com.mysql.jdbc.ConnectionProperti
在我的 Tomcat contex.xml 文件中,我有这个数据源声明: 但是在我的 DAO 代码中,当我检查提取大小时它没有按预期返回 7000: if (s.getFetchSize() < 1
我在初始化 BasicDataSource 时遇到此异常。我想将自定义连接属性传递给数据源。 我的配置是: Caused by: org.springframework.beans.NotWritab
我是一名优秀的程序员,十分优秀!