`
softdn
  • 浏览: 40602 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring hibernate: this web application instance has been stopped already

阅读更多

先看出错信息:(其实这个报错,就是不顺眼,不会影响工程的。)

 

2010-2-8 20:33:56 org.apache.catalina.core.StandardContext reload
信息: Reloading this Context has started
********** Remove Context 9999999999
2010-2-8 20:33:56 org.apache.catalina.core.ApplicationContext log
信息: Closing Spring root WebApplicationContext
[INFO ]|2010/02/08 20:33:56|SessionFactoryImpl.java|(close:769)closing
2010-2-8 20:33:56 org.apache.catalina.core.ApplicationContext log
信息: Shutting down log4j
2010-2-8 20:33:57 org.apache.catalina.core.ApplicationContext log
信息: Set web app root system property: 'webapp.root' = [C:\Softdn\product\wyweb\WebRoot\]
2010-2-8 20:33:57 org.apache.catalina.core.ApplicationContext log
信息: Initializing log4j from [C:\Softdn\product\wyweb\WebRoot\WEB-INF\log4j.properties]
2010-2-8 20:33:57 org.apache.catalina.core.ApplicationContext log
信息: Initializing Spring root WebApplicationContext
2010-2-8 20:33:57 org.apache.catalina.loader.WebappClassLoader loadClass
信息: Illegal access: this web application instance has been stopped alreadyCould not load com.mysql.jdbc.SQLError 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:1273)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    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.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)

 

这个错误比较隐蔽的说,我们来个看报错信息倒推,这样最直接啦。

要满足如下条件才会出现这个错误:

1,看:this web application instance has been stopped already

     所以,需要重启Tomcat的情况下才有可能发上,这是第一个出错条件。

2,看:Could not load com.mysql.jdbc.SQLError

     看这个不能直接推出问题产生条件,但是很明显是关于mysql jdbc的。

     所以,应该是在使用了mysql jdbc时(其一) 或 加载时(其二)发生的。

     这时候就出现了种情况,那么到底是那种条件呢? 还是两其一、其二都会产生?

     仅凭以上数据无法判断,这时要用关闭tomcat,重启tomcat,来判断是否跟其二条件有关,

     全部关闭后,重启tomcat,没有问题出现上述报错信息,系统正常。

     所以,肯定是因为使用了mysql jdbc时报的错,这样,第二个必要条件就找到了。

总结以上两点,通俗点讲,就是你重启了工程(可能是因为直接修改代码,工程reload了), 并且,连过了数据库(登录等),才出现了上述报错信息。

 

    想吧,首先想到的是什么? 缓存和jar包加载顺序,是我能想到的,不知道你想到了什么。

 

    我想到的是,在使用db 链接时,重新加载了mysql的驱动jar包导致的。

 

    于是乎,将WebRoot\WEB-INF\lib下的mysql-connector-java-5.1.7-bin.jar剪贴 到Tomcat 6.0\lib下,

    就避免了上述报错。

 

    表达不清楚之处,请多多指教!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics