【问题标题】:Apache Tomcat reboot. Could not load com.mysql.jdbc.SQLErrorApache Tomcat 重新启动。无法加载 com.mysql.jdbc.SQLError
【发布时间】:2013-12-19 06:00:38
【问题描述】:

我在 Spring Source 和 Hibernate POJO 中使用带有连接池的 Apache Tomcat 7.0。 总是我重新启动 Tomcat 我有以下错误:

03-dic-2013 9:33:46 org.apache.catalina.loader.WebappClassLoader loadClass
INFO: Acceso ilegal: esta instancia de aplicación web ya ha sido parada.  Could not load com.mysql.jdbc.SQLError.  La eventual traza de pila que sigue ha sido motivada por un error lanzado con motivos de depuración así como para intentar terminar el hilo que motivó el acceso ilegal y no tiene impacto funcional.
java.lang.IllegalStateException
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1600)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
    at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3321)
    at com.mysql.jdbc.MysqlIO.quit(MysqlIO.java:1667)
    at com.mysql.jdbc.ConnectionImpl.realClose(ConnectionImpl.java:4322)
    at com.mysql.jdbc.ConnectionImpl.cleanup(ConnectionImpl.java:1348)
    at com.mysql.jdbc.ConnectionImpl.finalize(ConnectionImpl.java:2679)
    at java.lang.ref.Finalizer.invokeFinalizeMethod(Native Method)
    at java.lang.ref.Finalizer.runFinalizer(Finalizer.java:83)
    at java.lang.ref.Finalizer.access$100(Finalizer.java:14)
    at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:160)

你知道我该如何解决吗?

非常感谢。

【问题讨论】:

  • mysql-connector jar 文件在哪里?它是在 Tomcat 的 lib 文件夹中还是在您的应用程序的 WEB-INF/lib 中?
  • 是的。连接工作正常。问题是当我重新启动 Tomcat 时。

标签: java mysql spring hibernate tomcat


【解决方案1】:

您是否在重新启动前关闭了连接? 如果您还没有,如果您继续建立新连接,它可能会达到数据库设置中允许的最大连接数。

 Connection con;
 try {
 con = ...; // open connection    
catch (SQLException e) {
// do stuff with your connection
 } finally {
 if (con != null && !con.isClosed()) {
    try {
        con.close();
    catch (SQLException e) {
        log.error("Failed to close connection", e);
    }
  }
}

【讨论】:

  • 我需要直接关闭连接吗?但是当我进行数据库查询时,我正在关闭连接会话:Session session = getSession(); Instrumentos ins = null; try { Criteria consulta = session.createCriteria....; consulta.add(Restrictions.eq("....", ....)); List<Instrumentos> lista = consulta.list(); } finally { session.close(); }
  • 无需直接关闭连接。但是,您显示的这段代码会关闭一个会话,这与您的数据库无关。在 java 中获取数据库连接的标准格式:见上面的帖子。注意 con.close();
  • 谢谢凯文。等spring bean销毁的时候再开发这个功能。
猜你喜欢
  • 2011-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-05
  • 1970-01-01
相关资源
最近更新 更多