Мне нужно закрыть некоторые потоки, когда мое приложение Java EE не развернуто, чтобы избежать страниц исключений в server.log каждый раз, когда я отменяю развертывание. Исключения говорят: «Входной поток был завершен или принудительно закрыт без явного закрытия». Я знаю, как закрыть (с помощью метода close ()), но я не знаю когда.
finallize () приходит слишком поздно, @PreDestroy вызывается не только перед удалением, но и в обычном режиме работы. Как приложение узнает, когда оно не развернуто?
Edit:
Я называю это при создании:
decisionLogger = KnowledgeRuntimeLoggerFactory.newThreadedFileLogger(
ksession,
config.getString("rules.logfilename"),
config.getInt("rules.loginterval"));
SolutionLogger имеет тип KnowledgeRuntimeLogger, который имеет только метод close (). Нет добытчика для нити, которая работает под капотом. Чтобы аккуратно закрыть его, мне нужно вызвать метод close, но когда?