24

Tomcatがシャットダウンされると、catalina.outログファイルに次のメッセージが表示されます。Tomcat7.xとTomcatJDBCデータソースを使用しています。

Mar 26, 2013 1:17:52 PM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc 
SEVERE: The web application [/my_webapp] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered. 
Mar 26, 2013 1:17:52 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads 
SEVERE: The web application [/my_webapp] appears to have started a thread named [MySQL Statement Cancellation Timer] but has failed to stop it. This is very likely to create a memory leak.

最初のものは、データソースが強制的に登録解除されたため、問題がないと主張しています。ただし、destroy-methodを次のように構成したため、奇妙です。

<bean name="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
    <property name="username" value="root"/>
    <property name="password" value="password"/>
</bean>  

なぜ私が2番目のものを手に入れるのかわかりません。「MySQLステートメントキャンセルタイマー」に関するもの。

どんな助けでも大歓迎です

編集1:@Zelldonによって提案された修正を試しましたが、最初のエラーが削除されました。ただし、MySQL Statement Cancellation Timer関連する問題は引き続き発生します

4

3 に答える 3

37

戦争ではなく、tomcat/libにsqlコネクタ/ドライバを配置してみてください。戦争を展開するたびにコネクタ/ドライバが作成されることがあるため、ガベージコレクタがそれらを削除できず、メモリリークが発生することがあります。したがって、コネクタをtomcat/libフォルダに移動してみてください。

次の回答をお読みください。

JDBCドライバーをTOMCAT_HOME/libフォルダーに配置する必要があるのはなぜですか?

MySQLに接続するようにTomcatを構成する方法

于 2013-03-26T08:12:16.370 に答える
1

これは、MySQL jdbcコネクタのこのバグに関連している可能性があります:http://bugs.mysql.com/bug.php?id=65909

MySQLチームが修正するのを待つか、MySQLで正常に動作するDrizzle JDBCコネクタを使用しようとします(URL接続のパラメータを変更するだけです)。私のテストでは、この種のものはありません。バグの。

于 2013-03-26T08:21:32.610 に答える
0

私はあなたと同じ問題に遭遇しました、そして私はmysql-connector-javaのpomバージョンを8.0.16から8.0.15にロールバックし、問題は解決されました、それはコネクタのバージョンとmysqlの間の不一致だと思います問題を引き起こした

于 2019-07-11T06:19:15.210 に答える