微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在tomcat 7.x中配置Apache dbcp2连接池

如何解决在tomcat 7.x中配置Apache dbcp2连接池

我正在使用Tomcat 7.0.64的旧应用程序上工作,我们想将apache dbcp2连接池配置为Tomcat中的资源。 该应用程序运行Spring 4.x和Hibernate4.x。 当我尝试从Spring应用程序访问dbcp2连接池时阅读了Tomcat文档后,出现以下异常-

javax.naming.NamingException: Could not create resource factory instance [Root exception is java.lang.classNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory]

即使org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory添加的“ factory”属性的类型为server.xml,为什么仍要使用org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory。下面提到的是配置的详细信息-

server.xml添加了以下内容-

<GlobalNamingResources>
    <Resource name="jdbc/mytestDB"
    auth="Container"
    factory="org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory"
    type="javax.sql.DataSource"
    username="test"
    password="test"
    driverClassName="oracle.jdbc.driver.OracleDriver"
    description="test db"
    url="jdbc:oracle:thin:@mytestDB:1521/mytestDB"
    maxActive="15"
    maxIdle="5"/>
</GlobalNamingResources>

在web.xml中添加了以下内容-

 <resource-ref>
     <description>PVO Database</description>
     <res-ref-name>jdbc/mytestDB</res-ref-name>
     <res-type>javax.sql.DataSource</res-type>
     <res-auth>Container</res-auth>
 </resource-ref>

添加了以下Maven依赖项-

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-dbcp2</artifactId>
    <version>2.8.0</version>
</dependency>           

<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-dbcp</artifactId>
<version>8.5.4</version>
</dependency>           
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
    <version>2.8.1</version>
</dependency>

在测试类中添加了以下内容-

Context initContext = new InitialContext(); 
Context envContext = (Context)initContext.lookup("java:comp/env");
DataSource ds = envContext.lookup("jdbc/mytestDB"); // This line gives the above mentioned error.    
Connection connection = ds != null ? ds.getConnection() : null;

解决方法

通过在要通过JNDI检索的tomcat -configure数据源中添加以下JVM属性,解决了该问题-

JAVA_OPTS =“ $ {JAVA_OPTS}-

Djavax.sql.DataSource.Factory =“ org.apache.commons.dbcp2.BasicDataSourceFactory”

但是我们决定升级tomcat版本。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。