WARNING [http-nio-8181-exec-550] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc
The web application [comparateur] registered the JDBC driver [com.mysql.jdbc.Driver]
but failed to unregister it when the web application was stopped.
To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
我用过这个类
package servlets;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Enumeration;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class MyContextListener implements ServletContextListener{
@Override
public void contextDestroyed(ServletContextEvent arg0) {
System.out.println("App shutdown ...");
System.out.println("Deregistering SQL-Drivers ...");
Enumeration<Driver> drivers = DriverManager.getDrivers();
while (drivers.hasMoreElements()) {
Driver driver = drivers.nextElement();
try {
DriverManager.deregisterDriver(driver);
System.out.println(driver.getClass().getName());
} catch (SQLException e) {
System.err.println("Error deregistering driver " +
driver.getClass().getName());
}
}
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
}
}
以及我与 DB 的联系
private String dbName = "NameDB";
private String user = "root";
private String pass = "PWD";
private String server = "localhost";
我有同样的概率但是有这个消息 信息 [http-nio-8181-exec-579]org.apache.catalina.core.ApplicationContext.log HTMLManager:列表:列出虚拟主机“localhost”的上下文
感谢任何帮助。
最佳答案
在我看来你的 ServletContextListener
Tomcat 未选择实现。
如果你想要你的 ServletContextListener
要由您的 Web 应用程序容器获取实现,您需要执行以下两项操作之一:
- 添加
@WebListener
类的注释。 将以下元素添加到您的 web.xml 文件中。此元素应该是根
<web-app>
的子元素元素。<listener> <listener-class>servlets.MyContextListener</listener-class> </listener>
关于jsp - Web 应用程序停止时无法注销 JDBC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32553267/