Tôi thấy vấn đề này đi lên rất nhiều. Vâng, Tomcat 7 không tự động hủy đăng ký nó, nhưng nó THỰC SỰ kiểm soát mã của bạn và thực hành mã hóa tốt? Chắc chắn BẠN muốn biết rằng bạn có tất cả các mã chính xác để đóng tất cả các đối tượng của bạn, tắt các luồng nhóm kết nối cơ sở dữ liệu và thoát khỏi tất cả các cảnh báo. Tôi chắc chắn.
Đây là cách tôi làm điều đó.
Bước 1: Đăng ký người nghe
web.xml
<listener>
<listener-class>com.mysite.MySpecialListener</listener-class>
</listener>
Bước 2: Thực hiện Trình nghe
com.mysite.MyecialListener.java
public class MySpecialListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
// On Application Startup, please…
// Usually I'll make a singleton in here, set up my pool, etc.
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
// On Application Shutdown, please…
// 1. Go fetch that DataSource
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource datasource = (DataSource)envContext.lookup("jdbc/database");
// 2. Deregister Driver
try {
java.sql.Driver mySqlDriver = DriverManager.getDriver("jdbc:mysql://localhost:3306/");
DriverManager.deregisterDriver(mySqlDriver);
} catch (SQLException ex) {
logger.info("Could not deregister driver:".concat(ex.getMessage()));
}
// 3. For added safety, remove the reference to dataSource for GC to enjoy.
dataSource = null;
}
}
Xin vui lòng bình luận và / hoặc thêm ...