0

Tomcat 7 で JSF アプリケーションを実行しようとすると、この例外がスローされます。

Caused by: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/test
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.getConnection(DriverManagerConnectionProviderImpl.java:192)
at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:278)
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:297)
... 51 more

EntityManagerFactory を作成する前にこの行を追加すると、正常に動作します。

Class.forName("com.mysql.jdbc.Driver");
emf = Persistence.createEntityManagerFactory("manager1");

私の依存関係は

<dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>4.1.2.Final</version>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.19</version>
    </dependency>

また、私のアプリケーションは追加せずにTomcat 6で正常に動作しますClass.forName("com.mysql.jdbc.Driver");

この問題を解決するアイデアはありますか? ありがとう

4

5 に答える 5

6

最初の実際の解決策: Hibernate 4.1.0 および 4.1.3.Final で試してください。

最終的にhttps://forum.hibernate.org/viewtopic.php?p=2454336に出くわす前に、Hibernate 4.1.2 でこの問題に遭遇しました。私が見る限り、Tomcat の新しいバージョン (DeviceManager の漏れやすい性質に対する修正) と Hibernate 4.1.2 の間には、少し互換性がありません。

driverManagerProtection="false"他の回避策は、Brad Whitaker の回答のようにドライバーの登録を明示的に呼び出すか、または$CATALINA_HOME/conf/server.xml のリスナー定義に追加して JreMemoryLeakPreventionListener が DriverManager を保護していないことを確認することです。

<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" driverManagerProtection="false">
于 2012-05-29T08:56:37.640 に答える
4

動作中の.warをTomcat5.5およびJava6からTomcat7およびJava7に移行したときに、これと同じ問題が発生しました。以前動作していた.warが「java.sql.SQLException:jdbc:sqlserver..に適したドライバーが見つかりません。 "。追加するだけで解決できました

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

呼び出す直前

java.sql.DriverManager.getConnection("myUrl");

この追加の呼び出しはjdbc4ドライバーでは必要ないとドキュメントに記載されていることは承知していますが、これで問題が解決しました。ドライバーjar(sqljdbc4.jar)は、私の.warのWEB-INF/libにありました。

于 2012-05-03T23:27:46.750 に答える
1

問題は、アプリケーションの実行時にドライバ クラスが利用できないことです。ドライバ jar を/WEB-INF/lib

于 2012-04-27T17:17:28.693 に答える
1

一部のサーバー (jboss、glassfish) では、ドライバー jar をサーバーのデフォルト ライブラリ フォルダーに配置する必要もありました。

于 2012-04-27T17:18:46.870 に答える
1

同様の問題があります。hibernate を 4.1.4final にアップグレードすることで解決されます。

于 2012-07-28T01:09:18.500 に答える