JDBC驱动程序JAR文件应在具有数据源的Tomcat部署中驻留在何处? [英] Where should the JDBC driver JAR files reside on a Tomcat deployment with a datasource?

查看:78
本文介绍了JDBC驱动程序JAR文件应在具有数据源的Tomcat部署中驻留在何处?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有使用Spring,Hibernate,Tomcat7和Java的Java Web应用程序. MySql的.我使用数据源进行数据库操作.我不太清楚从哪里加载jar文件(Tomcat-jdbc.jarMysql-connector.jar)的标准位置?如果我将两个罐子都放在CATALINA_HOME/lib/webapps/myApp/WEB-INF/lib中,则可以使用.但是我被告知只能使用CATALINA_HOME/lib/中的Tomcat-jdbc和/WEB-INF/lib/中的mysql-connector.jar,这为Sql Driver提供了ClassNotFound异常.有人可以让我知道这些罐子的正确位置吗?

I have java web application using Spring, Hibernate, Tomcat7 & MySql. I use Datasource for database operations. I am not very clear about what is the standard location to load the jar files (Tomcat-jdbc.jar & Mysql-connector.jar) from? It works if I keep BOTH the jars either in CATALINA_HOME/lib/ or webapps/myApp/WEB-INF/lib. But I was told to use only the Tomcat-jdbc from CATALINA_HOME/lib/ and mysql-connector.jar from /WEB-INF/lib/, which gives a ClassNotFound Exception for Sql Driver. Can someone let me know which is the right location for these jars?

<bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource"
        destroy-method="close">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="${db.url}" />
        <property name="username" value="${db.username}" />
        <property name="password" value="${db.password}" />
        <property name="initialSize" value="${db.initialSize}" />
        <property name="minIdle" value="${db.minIdle}" />
        <property name="maxActive" value="${db.maxActive}" />
        <property name="maxIdle" value="${db.maxIdle}" />
        <property name="testWhileIdle" value="${db.testWhileIdle}" />
        <property name="minEvictableIdleTimeMillis" value="${db.minEvictableIdleTimeMillis}" />
        <property name="timeBetweenEvictionRunsMillis" value="${db.timeBetweenEvictionRunsMillis}" />
        <property name="validationQuery" value="${db.validationQuery}" />
    </bean>

推荐答案

这取决于谁在管理数据源.

That depends on who's managing the datasource.

如果像new SomeDataSource()这样在您自己的Web应用程序中手动构建和管理数据源,则可以将JDBC驱动程序JAR文件放置在Web应用程序的/WEB-INF/lib中.但是,如果appserver已经在自己的/lib中提供了完全相同的JDBC驱动程序JAR文件,那么您也可以使用它.

If you're manually constructing and managing the datasource in your own webapp like so new SomeDataSource(), etc, then the JDBC driver JAR file can be placed in webapp's /WEB-INF/lib. But if appserver happen to provide the very same JDBC driver JAR file in its own /lib already, then you could also just make use of it.

但是,如果您指示Appserver自己单独管理数据源,而只是通过@Resource等在webapp中使用它,则JDBC驱动程序JAR文件必须放置在appserver自己的文件中/lib,原因非常简单,因为数据源是在appserver的启动时完全独立于(将要部署的)任何Web应用程序准备的.该数据源又可以在所有Web应用程序之间共享.如果JDBC驱动程序JAR文件位于尚未部署的Web应用程序之一中,则从技术上讲就行不通了.

However, if you're instructing appserver to manage the datasource all by itself and you're merely making use of it in your webapp via @Resource, etc, then the JDBC driver JAR file has to be placed in appserver's own /lib, for the very simple reason because the data source is prepared on appserver's startup completely independently from any (to be) deployed web applications. This data source is in turn shareable among all webapps. It would technically just not work if the JDBC driver JAR file is in one of the yet-to-be-deployed webapps.

这篇关于JDBC驱动程序JAR文件应在具有数据源的Tomcat部署中驻留在何处?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆