2012-04-29 11 views
2

javadocには、「my.sql.Driverクラスをロードするには、META-INF/services/java.sql.Driverファイルにエントリ:my.sql.Driver "。WebアプリケーションにMETA-INF/services/java.sql.Driverを配置する場所

Webアプリケーションには、通常、WEB-INFの兄弟としてMETA-INFフォルダがありませんか?しかし、JPAの仕様では、WEB-INF/classes/META-INF /にpersistence.xmlがあります。

services/java.sql.Driverのどの箇所が正しいですか?

ところで、私は"No suitable Driver"例外を両方の場所で取得しています。

答えて

7

あなた自身では提供しないでください。 JDBCドライバのJARファイルには、すでにそれが含まれているはずです。少なくとも、それがJDBC 4.0準拠のドライバであれば。これは、明示的javadoc of DriverManagerに記載されている:

DriverManager方法getConnectiongetDriversは、Java Standard EditionのService Providerメカニズムをサポートするように拡張されました。 JDBC 4.0ドライバには、ファイルMETA-INF/services/java.sql.Driverが含まれている必要があります。このファイルには、java.sql.DriverのJDBCドライバ実装の名前が含まれています。

my.sql.Driver 

アプリケーション明示的Class.forName()を使用してJDBCドライバをロードするために不要になった:たとえば、my.sql.Driverクラスをロードするために、META-INF/services/java.sql.Driverファイルにはエントリが含まれます。 Class.forName()を使用して現在JDBCドライバをロードしている既存のプログラムは、修正を加えずに引き続き動作します。

あなたが持っていない場合は、明らかにJDBC 4.0準拠のドライバではありません。明示的にドライバをロードしたり、JDBC 4.0準拠のドライバにアップグレードしたり、コンテナプール(DataSource)を使用する必要があります(接続プーリングなどの利点があります)。

関連する問題