Фильтры сервлетов - инициализация контекста - PullRequest
2 голосов
/ 13 октября 2011

При использовании «глобального» фильтра, который находится в корневом каталоге lib веб-сервера apache tomcat и применяется ко всем контекстам веб-приложения: мне было интересно, синхронизируются ли контексты веб-приложения синхронно - по одному,или может быть случай, когда функция Filter.init () вызывается двумя разными контекстами в одно и то же время.

Я спрашиваю об этом, так как хочу инициализировать объект конфигурации соединения с базой данных на основе определенногоFilterConfig.initParameter при первом вызове init () вызывается любым из контекстов приложения, и мне интересно, стоит ли помещать вышеприведенное в синхронизированный блок или нет ...

1 Ответ

1 голос
/ 14 октября 2011

Я думаю, что это внутреннее устройство Tomcat, оно может измениться в любое время, поэтому я бы сделал это в синхронизированном блоке.Это не имеет большого значения или проблемы с производительностью, потому что он запускается только один раз при инициализации контекста приложения.

Из Спецификация Java-сервлета 6.2.1 Срок службы фильтра :

Только один экземпляр на объявление в дескрипторе развертывания создается для JVM контейнера.

Вы можете достичь того же результата с помощью специального клапана:

...