gpt4 book ai didi

重新加载Tomcat时出现java.lang.IllegalStateException

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:58:15 24 4
gpt4 key购买 nike

我正在使用 Hibernate 应用程序处理 Spring,它工作正常,但是在启动或重新加载 tomcat 服务器时,我收到 java.lang.IllegalStateException异常(exception)。

任何人都可以解释一下,为什么会发生此异常以及如何解决它?
INFO: Illegal access: this web application instance has been stopped already. Could not load java.net.BindException. The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
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.SQLError.createLinkFailureMessageBasedOnHeuristics(SQLError.java:1220)
at com.mysql.jdbc.exceptions.jdbc4.CommunicationsException.<init>(CommunicationsException.java:57)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3270)
at com.mysql.jdbc.MysqlIO.quit(MysqlIO.java:1659)
at com.mysql.jdbc.ConnectionImpl.realClose(ConnectionImpl.java:4296)
at com.mysql.jdbc.ConnectionImpl.cleanup(ConnectionImpl.java:1265)
at com.mysql.jdbc.ConnectionImpl.finalize(ConnectionImpl.java:2667)
at java.lang.System$2.invokeFinalize(Unknown Source)
at java.lang.ref.Finalizer.runFinalizer(Unknown Source)
at java.lang.ref.Finalizer.access$100(Unknown Source)

最佳答案

我想给你几个选择。你可以试试看。任何选项都可以满足您的需求。

  • Restart your tomcat and apache server因为长期使用,
    它保留您的应用程序的旧版本。
  • 清理你的 tomcat temp目录和 restart
  • 如错误中所述 ,

  • The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.



    真正的原因可能是此时您处于 Debug模式并且没有清除正在运行的线程。所以删除你的断点并运行它而不是调试
  • 如果您的代码包含任何类型的未正确终止的线程,则可能会发生此类错误。
    你有init()方法但没有 destroy()方法,则可能会出现此类错误。详情可点击链接-http://www.javaspecialists.eu/archive/Issue056.html
  • 如果webapp has stopped, or is stopping ,这意味着 .war文件或 WEB-INF/web.xml时间戳已更改,并且 web 应用程序可能正在重新加载。请检查时间戳是否正常。
  • 要关闭它,设置 reloadable="false"在上下文定义中
    你的应用程序。可能是tomcat的server.xml .
    详细解决方案:
    可重载上下文的 tomcat 的 server.xml 设置为 false。
    例如:

  • 上下文路径="/expert"docBase="expert"debug="0"reloadable ="false"/>

    解决方法很简单,只要在 reloadable = "true" into false中的tomcat的server.xml就行了,但是这样做会失去热部署的优势,而且对于开发不是很方便,干脆改不改。这个错误没有关系。

    错误原理:

    原因是因为tomcat重启了,因为之前的tomcat线程还没有完全关闭,重启tomcat会报这个异常,不过这不影响正常使用,只是跳转异常烦人。使用hibernate、spring或其他大型组件,当一个WEB应用系统类很多时,

    如果你打开了 Tomcat reloadable = true ,然后每当相关文档发生变化时,Tomcat 就会停止 web app 并释放内存,然后重新加载 web app。这可能是一个巨大的工程。所以我们总觉得如果只有某一类的重载函数,会大大满足我们的调试器。

    UPDATE: For code related issue



    首先,我想告诉你,我已经给了你一些基于tomcat的解决方案。现在 我想给你一个代码基础的解决方案 .你能用这个问题交叉检查你的代码吗?请关注网址。
  • http://www.coderanch.com/t/660126/Wiki/Illegal-State-Exception

  • UPDATE: For MySQL related issue


  • 有2个问题。
  • 此 Web 应用程序实例已停止。无法加载 java.net.BindException .
  • 此 Web 应用程序实例已
    已停止。无法加载 com.mysql.jdbc .

  • 这是因为 MySQL JDBC 驱动程序 WEB-INF/lib下申请目录,在重新释放其加载两次,只要复制到 %TOMCAT_HOME%/lib即 cocoa 以解决问题。
    我们可以从 WEB-INF/lib解决这两个异常MySQL驱动文件夹移至 %TOMCAT_HOME%/lib .
  • 我怀疑这可能是在 Web 应用程序重新启动后发生的,它会在短时间内关闭。然后一些 finalize()代码中的方法可能试图做一些清理太晚了。我不能说这是否在您的代码或 MySQL 驱动程序中。您绝对应该一次在一个目录中只有一个 jar 版本。您可能希望将其升级到 latest (现在 5.1.38)以防某些可能影响您的问题得到修复。(编号 9 是从 @WhiteFang34 复制的)

  • 9的相关链接: tomcat 6.0.24 Exception: Could not load com.mysql.jdbc.SQLError

    关于重新加载Tomcat时出现java.lang.IllegalStateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35739646/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com