2

javadocには、「my.sql.Driver クラスをロードするには、META-INF/services/java.sql.Driver ファイルにエントリ my.sql.Driver が含まれます」と記載されています。

通常、webapps には WEB-INF の兄弟として META-INF フォルダーがありませんか? ただし、JPA 仕様では、WEB-INF/classes/META-INF/ で persistence.xml を探しています。

services/java.sql.Driver の正しい場所はどれですか?

ちなみに、両方の場所で「適切なドライバーがありません」という例外が発生しています。

4

1 に答える 1

8

自分で提供しないでください。JDBC ドライバーの JAR ファイルには、既にそれが含まれているはずです。少なくとも、JDBC 4.0 準拠のドライバーであれば。これは、次の javadocDriverManagerでも明示的に言及されています。

DriverManagerメソッドgetConnectionとメソッドはgetDrivers、Java Standard Edition Service Providerメカニズムをサポートするように拡張されました。JDBC 4.0 ドライバーには、ファイルが含まれている必要がありますMETA-INF/services/java.sql.Driver。このファイルには、 の JDBC ドライバー実装の名前が含まれていますjava.sql.Driver。たとえば、my.sql.Driverクラスをロードするには、META-INF/services/java.sql.Driverファイルに次のエントリが含まれます。

my.sql.Driver

アプリケーションは、 を使用して JDBC ドライバーを明示的にロードする必要がなくなりましたClass.forName()。現在使用している JDBC ドライバーをロードしている既存のプログラムClass.forName()は、変更しなくても引き続き動作します。

ない場合は、明らかに JDBC 4.0 準拠のドライバーではありません。自分でドライバーを明示的にロードするか、JDBC 4.0 準拠のドライバーにアップグレードするか、管理されたコンテナーを使用する必要がDataSourceあります (接続プールなど、より多くの利点もあります)。

于 2012-04-29T04:42:12.107 に答える