Мы пишем java-агент, который, среди прочего, предоставляет какой-то графический интерфейс с использованием java.awt.TrayIcon. Когда мы используем этот агент, например, Tomcat, у нас возникла следующая проблема:
- Пользователь запускает Tomcat с помощью сценария оболочки
- Наш агент добавляет значок на панель задач
- Пользователь выключает Tomcat с помощью сценария оболочки
- AWT Event thread видит, что есть отображаемый компонент, значок в панели задач, и не закрывается.
- Поскольку поток событий AWT не является потоком демона, все приложение не может завершить работу
Теперь вопрос в том, что нам делать, чтобы приложение завершило работу? Можно ли сделать демон потока отправки событий AWT? Есть ли крючки выключения для агентов? Что-нибудь еще?