У меня есть приложение, которое порождает рабочие потоки и обрабатывает файлы в рабочих потоках. По запросу на завершение работы приложения я хочу, чтобы приложение завершало работу, только когда рабочий поток завершил обработку текущего файла (если он обрабатывает файл). Я использую JavaServiceWarapper для управления своим приложением.
Я добавил перехватчики завершения работы, которые информируют рабочий поток не начинать обработку нового файла при получении запроса на отключение.
Обработка файла никогда не занимает более 30 секунд, и я установил тайм-ауты на 60 секунд, просто чтобы быть одной из надежных сторон.
По какой-то причине, когда я запускаю останов, мое приложение немедленно закрывается и не ждет завершения рабочих потоков. Рабочие потоки получают запрос на завершение работы, но приложение завершается немедленно (и не ждет 60 секунд)
Некоторые важные настройки, которые у меня есть: wrapper.java.mainclass = org.tanukisoftware.wrapper.WrapperSimpleApp wrapper.adviser = FALSE wrapper.debug = FALSE wrapper.disablerestarts = FALSE wrapper.jvmexit.timeout = 60 wrapper.shutdown.timeout = 60 wrapper.signal.mode.hup = FORWARD wrapper.startup.timeout = 300 wrapper.usesystemtime = FALSE wrapper.ping.timeout = 120
Может ли кто-нибудь помочь мне с ошибкой, которую я совершаю.