Gymterview
middle

Как организовать подключение к базе данных и журналирование в сервлете

Подключение к базе данных инициализируется в 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() конкретного сервлета. Это обеспечивает единую точку создания и уничтожения ресурсов для всего приложения.