簡體   English   中英

JDBC驅動程序JAR文件應該駐留在具有數據源的Tomcat部署中的哪個位置?

[英]Where should the JDBC driver JAR files reside on a Tomcat deployment with a datasource?

我有使用Spring,Hibernate,Tomcat7和MySql的java Web應用程序。 我使用Datasource進行數據庫操作。 我不是很清楚加載jar文件( Tomcat-jdbc.jarMysql-connector.jar )的標准位置是什么? 如果我在CATALINA_HOME/lib/webapps/myApp/WEB-INF/lib保留罐子,它就可以工作。 但我被告知只使用來自/WEB-INF/lib/ CATALINA_HOME / lib /和mysql-connector.jar的Tomcat-jdbc,它為Sql Driver提供了ClassNotFound異常。 有人能告訴我這些罐子的正確位置嗎?

<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>

這取決於誰在管理數據源。

如果您在自己的/WEB-INF/lib應用程序中手動構建和管理數據源(如new SomeDataSource()等),則可以將JDBC驅動程序JAR文件放在webapp的/WEB-INF/lib 但是如果appserver碰巧在它自己的/lib提供了相同的JDBC驅動程序JAR文件,那么你也可以使用它。

但是,如果你指示appserver自己管理數據源而你只是通過@Resource等在你的webapp中使用它,那么JDBC驅動程序JAR文件必須放在appserver自己的/lib ,這是一個非常簡單的原因,因為數據源是在appserver的啟動時准備的,完全獨立於任何(將)部署的Web應用程序。 此數據源又可在所有Web應用程序之間共享。 如果JDBC驅動程序JAR文件位於尚未部署的Web應用程序之一,那么從技術上講它就不起作用了。

當談到要決定的罐子的位置時,拇指規則是:

  1. 在服務器lib位置使用jar。
  2. 如果jar不可用,請在應用程序的lib文件夾中包含相同的內容。
  3. 要查找合適的Jars,系統將按以下順序查找以下存儲庫:

JVM的Bootstrap類

系統類加載器類(如上所述)

/ WEB-INF /您的Web應用程序的類/WEB-INF/lib/*.jar

您的Web應用程序$ CATALINA_HOME / common / classes

$ CATALINA_HOME /普通/核准/ *。JAR

$ CATALINA_HOME /普通/ i18n中/ *。JAR

$ CATALINA_HOME / common / lib目錄/ *。JAR

$ CATALINA_BASE /共享/班

$ CATALINA_BASE /共享/ lib目錄/ *。JAR

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM