Wo soll der JDBC-Treiber-JAR-Dateien befinden sich auf einem Tomcat-Bereitstellung mit einer datasource?
Ich java-web-Anwendung mit Spring, Hibernate, Tomcat7 & MySql. Ich benutze Datasource für die Datenbank-Operationen. Ich bin nicht ganz klar darüber, was ist der standard-Speicherort zum laden der jar-Dateien (Tomcat-jdbc.jar
& Mysql-connector.jar
) aus? Es funktioniert, wenn ich halten BEIDE die Gläser entweder in CATALINA_HOME/lib/
oder webapps/myApp/WEB-INF/lib
. Aber mir wurde gesagt, nur zur Verwendung der Tomcat-jdbc aus CATALINA_HOME/lib/und mysql-connector.jar
aus /WEB-INF/lib/
gibt, die eine ClassNotFound
Ausnahme für Sql Driver
. Kann jemand lassen Sie mich wissen, welche ist die richtige location für diese Gläser?
<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>
Hast du den MySQL-Treiber auf Ihrem classpath?
Ja. /WEB-INF/lib/mysql-connector.jar
Lesen Sie auch Apache Tomcat 6.0-Class Loader HOW-TO
Ja. /WEB-INF/lib/mysql-connector.jar
Lesen Sie auch Apache Tomcat 6.0-Class Loader HOW-TO
InformationsquelleAutor PeterGriffin | 2013-09-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das hängt davon ab, wer die Verwaltung der datasource.
Wenn Sie manuell den Bau und die Verwaltung der datasource in Ihrer eigenen webapp wie so
new SomeDataSource()
usw, dann wird der JDBC-Treiber-JAR-Datei platziert werden kann in der webapp ist/WEB-INF/lib
. Aber wenn Anwendungsserver-geschehen die gleichen JDBC-Treiber-JAR-Datei in einem eigenen/lib
schon, dann könnte man auch einfach nutzen.Allerdings, wenn Sie anweisen Anwendungsserver verwalten Sie die datasource-ganz von selbst und du bist nur Gebrauch machen, es in Ihre webapp über
@Resource
usw, dann wird der JDBC-Treiber-JAR-Datei platziert werden muss appserver eigenen/lib
, aus dem einfachen Grund, weil die Datenquelle ist bereit, auf den Anwendungsserver zu starten, völlig unabhängig von jeder (werden), web-Anwendungen. Diese Datenquelle ist wiederum shareable unter allen webapps. Es wäre technisch einfach nicht funktionieren, wenn der JDBC-Treiber-JAR-Datei in einem der noch-zu-sein-bereitgestellt webapps.Sie können einfach erstellen Sie mehr als eine Datenquelle.
Zur info... Finden Sie unter diesem ausführliche hilfreiche Antwort auch von BalusC, um eine ähnliche Frage.
InformationsquelleAutor BalusC
Wenn es um die Lage der Gläser entschieden, die Daumen-Regel ist:
InformationsquelleAutor Gyanendra Dwivedi