Использование:
System.IO.File.GetAttributes(string path)
и проверяют, содержит ли возвращенный FileAttributes
результат значение FileAttributes.Directory
:
bool isDir = (File.GetAttributes(path) & FileAttributes.Directory)
== FileAttributes.Directory;
Я бы сказал нет. Контейнер вызывает метод contextDestroyed
в качестве уведомления о том, что контекст вот-вот будет разрушен, он не запрашивает вашего разрешения. Кроме того, Javadoc не определяет, что произойдет, если вы выберете из него исключение, поэтому результаты могут быть непредсказуемыми и / или непереносимыми.
Я бы позвонил executor.shutdownNow ()
внутри блока catch, чтобы принудительно завершить работу исполнителя (т.е. «у вас был шанс,
То, что у вас есть в образце кода (повторное прерывание текущего потока), - это именно то, что я бы порекомендовал. Что-то в Tomcat вне вашего собственного кода отправило исходное прерывание, поэтому позвольте Tomcat обработать его.
Я не знаю, что Tomcat будет делать с InterruptedException. Это не определено. Но Tomcat инициировал прерывание, а Tomcat владеет потоком, в котором работает метод contextDestroyed (...). Общий принцип из «Java Concurrency in Practice», который применяется здесь: создатель потока отвечает за обработку жизни потока - проблемы с цилиндром.
Обработка прерывания определенно является проблемой жизненного цикла.