Как организовать подключение к базе данных и журналирование в сервлете
Подключение к базе данных инициализируется в ServletContextListener при старте приложения и сохраняется как атрибут контекста для общего доступа. Это обеспечивает единственную точку инициализации и корректное закрытие ресурсов при остановке приложения.
Пример
@WebListener
public class AppContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
DataSource ds = createDataSource(); // пул соединений
sce.getServletContext().setAttribute("dataSource", ds);
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
// закрыть пул соединений
}
}
Журналирование (logging) подключается стандартным для выбранного фреймворка способом: конфигурация logback.xml или log4j2.xml размещается в classpath. Логгер создаётся в каждом классе как статическое поле:
Пример
private static final Logger log = LoggerFactory.getLogger(MyServlet.class);
В Spring Boot DataSource и логирование настраиваются автоматически через application.yml — ручная инициализация через listener не нужна.
На собеседовании: ключевой момент — ресурсы инициализируются в listener, а не в конструкторе или
init()конкретного сервлета. Это обеспечивает единую точку создания и уничтожения ресурсов для всего приложения.