JDBC驱动程序JAR文件应该驻留在具有数据源的Tomcat部署中的哪个位置?

Pet*_*fin 6 java tomcat datasource jdbc

我有使用Spring,Hibernate,Tomcat7和MySql的java Web应用程序.我使用Datasource进行数据库操作.我不清楚加载jar文件(Tomcat-jdbc.jar&Mysql-connector.jar)的标准位置是什么?它的工作原理,如果我保持双方的罐子无论是在CATALINA_HOME/lib/webapps/myApp/WEB-INF/lib.但我被告知只使用CATALINA_HOME/lib /中的Tomcat-jdbc和mysql-connector.jarfrom /WEB-INF/lib/,它给出了一个ClassNotFoundException Sql Driver.有人能告诉我这些罐子的正确位置吗?

<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>
Run Code Online (Sandbox Code Playgroud)

Bal*_*usC 9

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

如果您在自己的webapp中手动构建和管理数据源new SomeDataSource()等,那么JDBC驱动程序JAR文件可以放在webapp中/WEB-INF/lib.但是如果appserver碰巧提供了自己的JDBC驱动程序JAR文件/lib,那么你也可以使用它.

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

  • 您只需创建多个数据源即可. (2认同)

Gya*_*edi 0

当谈到要决定罐子的位置时,经验法则是:

  1. 使用服务器库位置中的 jar。
  2. 如果该 jar 不可用,请将其包含在应用程序的 lib 文件夹中。
  3. 为了找到合适的 Jars,系统会按顺序查找以下存储库:

JVM 的引导类

系统类加载器类(如上所述)

/WEB-INF/Web 应用程序的类 /WEB-INF/lib/*.jar

您的网络应用程序 $CATALINA_HOME/common/classes

$CATALINA_HOME/common/endorsed/*.jar

$CATALINA_HOME/common/i18n/*.jar

$CATALINA_HOME/common/lib/*.jar

$CATALINA_BASE/共享/类

$CATALINA_BASE/shared/lib/*.jar