草庐IT

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

coder 2024-03-28 原文

我正在使用 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/

    有关重新加载Tomcat时出现java.lang.IllegalStateException的更多相关文章

    1. ruby - ECONNRESET (Whois::ConnectionError) - 尝试在 Ruby 中查询 Whois 时出错 - 2

      我正在用Ruby编写一个简单的程序来检查域列表是否被占用。基本上它循环遍历列表,并使用以下函数进行检查。require'rubygems'require'whois'defcheck_domain(domain)c=Whois::Client.newc.query("google.com").available?end程序不断出错(即使我在google.com中进行硬编码),并打印以下消息。鉴于该程序非常简单,我已经没有什么想法了-有什么建议吗?/Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.

    2. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

      我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

    3. ruby - 如何在续集中重新加载表模式? - 2

      鉴于我有以下迁移:Sequel.migrationdoupdoalter_table:usersdoadd_column:is_admin,:default=>falseend#SequelrunsaDESCRIBEtablestatement,whenthemodelisloaded.#Atthispoint,itdoesnotknowthatusershaveais_adminflag.#Soitfails.@user=User.find(:email=>"admin@fancy-startup.example")@user.is_admin=true@user.save!ende

    4. ruby-on-rails - active_admin 目录中的常量警告重新声明 - 2

      我正在使用active_admin,我在Rails3应用程序的应用程序中有一个目录管理,其中包含模型和页面的声明。时不时地我也有一个类,当那个类有一个常量时,就像这样:classFooBAR="bar"end然后,我在每个必须在我的Rails应用程序中重新加载一些代码的请求中收到此警告:/Users/pupeno/helloworld/app/admin/billing.rb:12:warning:alreadyinitializedconstantBAR知道发生了什么以及如何避免这些警告吗? 最佳答案 在纯Ruby中:classA

    5. java - 等价于 Java 中的 Ruby Hash - 2

      我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/

    6. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

      我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

    7. 使用 ACL 调用 upload_file 时出现 Ruby S3 "Access Denied"错误 - 2

      我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file

    8. ruby - 在 Ruby 中重新分配常量时抛出异常? - 2

      我早就知道Ruby中的“常量”(即大写的变量名)不是真正常量。与其他编程语言一样,对对象的引用是唯一存储在变量/常量中的东西。(侧边栏:Ruby确实具有“卡住”引用对象不被修改的功能,据我所知,许多其他语言都没有提供这种功能。)所以这是我的问题:当您将一个值重新分配给常量时,您会收到如下警告:>>FOO='bar'=>"bar">>FOO='baz'(irb):2:warning:alreadyinitializedconstantFOO=>"baz"有没有办法强制Ruby抛出异常而不是打印警告?很难弄清楚为什么有时会发生重新分配。 最佳答案

    9. ruby-on-rails - 使用 config.threadsafe 时从 lib/加载模块/类的正确方法是什么!选项? - 2

      我一直致力于让我们的Rails2.3.8应用程序在JRuby下正确运行。一切正常,直到我启用config.threadsafe!以实现JRuby提供的并发性。这导致lib/中的模块和类不再自动加载。使用config.threadsafe!启用:$rubyscript/runner-eproduction'pSim::Sim200Provisioner'/Users/amchale/.rvm/gems/jruby-1.5.1@web-services/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:105:in`co

    10. java - 从 JRuby 调用 Java 类的问题 - 2

      我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www

    随机推荐