首页 > 解决方案 > Tomcat8 使用与 OracleDB 的连接池的问题

问题描述

我们有一个由第三方供应商提供的应用程序,它在 Tomcat 8 和 JDK 8 上运行到带有 ojdbc7.jar 和 xdb6.jar 驱动程序的 Oracle 12 DB。该应用程序有效,但比预期的要慢。在调查时,应用程序似乎配置为使用连接池,但应用程序似乎正在为每个查询创建新连接,而不是使用任何最初创建的到数据库的连接。

不幸的是,我无权访问第 3 方应用程序的代码。但是,希望能够了解我在 Tomcat 设置中缺少什么来进行池化工作。

我尝试通过 Apache 的文档了解较旧的 Oracle 连接,并尝试在 Web 上找到其他选项。

<Resource name="jdbc/DataSource" auth="Container"
        type="javax.sql.DataSource"
        driverClassName="oracle.jdbc.OracleDriver"
        url="jdbc:oracle:thin:@localhost:1521:XE"
        username="myProxyUser" password="myPassword"
        initialSize="5" maxTotal="100" maxIdle="-1"
        maxWaitMillis="30000"
        validationQuery="select 1 from dual"
        testOnBorrow="true"
        accessToUnderlyingConnectionAllowed = "true"
        connectionProperties="defaultRowPrefetch=100"
        removeAbandoned = "true"
        removeAbandonedTimeout = "30"/>

标签: javatomcatjdbcconnection-pooling

解决方案


您可以通过定义类型和工厂来指定池

type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"

推荐阅读