2013-09-04 14 views
6

私はSpring、Hibernate、Tomcat7 & MySqlを使ってJava Webアプリケーションを持っています。私はデータベース操作のためにデータソースを使用します。私はjarファイル(Tomcat-jdbc.jar & Mysql-connector.jar)を読み込むための標準的な場所は何ですか?それは私が両方の瓶をCATALINA_HOME/lib/またはwebapps/myApp/WEB-INF/libのいずれかに保っている場合に機能します。しかし、私はCATALINA_HOME/lib /からのTomcat-jdbcとmysql-connector.jar/WEB-INF/lib/)のみを使用するように指示されました。の例外はSql Driverです。誰かが私にこれらの瓶の正しい場所が分かりましたか?JDBCドライバのJARファイルは、データソースを持つTomcatデプロイメントにどこに存在する必要がありますか?

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

クラスパスにMySQLドライバがありますか? – NickJ

+0

はい。 /WEB-INF/lib/mysql-connector.jar – PeterGriffin

+0

[Apache Tomcat 6も参照してください。0 Class Loader HOW-TO](https://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html) –

答えて

0

それが決定されるjarファイルの場所に来るとき、親指のルールがあることである:

  1. は、サーバーのlibの場所にjarファイルを使用してください。
  2. jarが利用できない場合は、アプリケーションのlibフォルダに同じものを含めます。
  3. 適した瓶を見つけるために、システムは順番に、次のリポジトリになります。あなたのJVM

    システムクラスローダクラス(前述)

    /の

ブートストラップクラスをWEB-INF/Webアプリケーションのクラス/WEB-INF/lib/*.jar

ウェブアプリケーション$ CATALINA_HOME/common/classes

$ CATALINA_HOME /共通/承認/ *。

$ CATALINA_HOME /共通/国際化/ *をjarファイル。

$ CATALINA_HOME /共通/ libに/ *をjarファイル。/共有

$ CATALINA_BASE /ジャークラス

$ CATALINA_BASE /共有/ libに/ *。jarファイルデータソースを管理しています誰に依存

+0

この回答のリストは、Tomcatのそれ以降のバージョンでは時代遅れです。バージョン8.0については、[Class Loader HOW-TO](https://tomcat.apache.org/tomcat-8.0-doc/class-loader-howto.html)および[この回答](http://stackoverflow.com)を参照してください。/a/265552/642706)を同様の質問に変換します。 –

9

new SomeDataSource()などのように自分のwebappで手動でデータソースを構築して管理している場合は、JDBCドライバのJARファイルをwebappの/WEB-INF/libに置くことができます。しかし、アプリケーションサーバがすでに同じJDBCドライバJARファイルを提供している場合は、それをそのまま利用することもできます。

しかし、アプリケーションサーバーにデータソースをすべて管理するように指示していて、単に@Resourceなどを介してWebアプリケーションで使用している場合は、JDBCドライバのJARファイルをアプリケーションサーバー自身の/libに配置する必要がありますデータソースは、配備されているWebアプリケーションとは完全に独立して、アプリケーションサーバーの起動時に準備されるため、非常に簡単な理由があります。このデータソースは、すべてのWebアプリケーション間で共有できます。 JDBCドライバのJARファイルがまだデプロイされていないWebアプリケーションの1つに含まれていると、技術的にはうまくいかないでしょう。

+0

各アプリケーションが異なるデータベースベンダーを使用する場合はどうなりますか? – PeterGriffin

+2

複数のデータソースを作成するだけです。 – BalusC

+0

FYI ...この[[BalusCによる詳細な有益な回答]](http://stackoverflow.com/a/2299870/642706)にも同様の質問があります。 –

関連する問題