我在一个线程中创建Excel文件使用
OutputStream stream = new FileOutputStream(path+fileName);
结果创建完对象后Tomcat发出警告
六月 11, 2018 3:22:33 下午 org.apache.catalina.loader.WebappClassLoaderBase clearReferencesJdbc
警告: The web application [ACI] registered the JDBC driver [oracle.jdbc.driver.OracleDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
六月 11, 2018 3:22:33 下午 org.apache.catalina.loader.WebappClassLoaderBase clearReferencesThreads
警告: The web application [ACI] appears to have started a thread named [startAutoChargeBackEmailJob_Worker-0] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
org.apache.commons.logging.LogFactory.getContextClassLoaderInternal(LogFactory.java:859)
org.apache.commons.logging.LogFactory.getFactory(LogFactory.java:423)
org.apache.commons.logging.LogFactory.getLog(LogFactory.java:685)
org.quartz.simpl.SimpleThreadPool.getLog(SimpleThreadPool.java:126)
org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:547)
这是什么原因导致的呢 有没有人遇到相同情况
基本上,你可以忽略这个警告,和你的FileOutputStream没关系,是因为JDBC驱动没有unregister,但这仅发生在tomcat关闭的时候,所以可以忽略。 如果你一定要解决,这样做:
在web.xml里注册一个listener:
然后在这个listener实现里,把jdbc驱动unregister: