2013-02-28 8 views
2

Я использую JBoss 7.1.1.Final. Здесь у меня есть синглтон для запуска. При запуске я инициализирую что-то, при выключении я завершаю/очищаю свои вещи. Но теперь я узнал, что окончание я могу делать все, что хочу, в течение 1 секунды! Через одну секунду приложение просто ушло, а иногда на 1 секунду недостаточно времени для реальной очистки.Время ожидания для JBoss?

Код:

@Singleton 
@Startup 
public class ShutdownTest { 

    @PostConstruct 
    public void initialize() { 
    LOG.info("Initialization"); 
    } 

    @PreDestroy 
    public void terminate() { 
    for(;;) { 
     LOG.info("loop in terminate..."); 
     Tools.sleepQuietly(100); // just sleeps for 100 milliseconds 
    } 
    } 

} 

Этот класс делает отчет о инициализационном при запуске, но при прекращении я получаю в 10 раз выходных, после этого, JBoss мертв.

Как настроить это время, пока JBoss не уничтожит себя, даже если некоторые методы PreDestroy все еще запущены?

В настоящее время я запускаю и останавливаю JBoss от Eclipse (Poller установлен в веб-порт).

ответ

0

Невозможно сделать это на JBoss 7 при событии выключения (на основе this answer от Tomaz Cerar от команды JBoss/WildFly).

В окнах я могу подтвердить, что нет возможности сделать это (и я предполагаю это для Linux).

Я нашел, что это работает, если вы остановили приложение, прежде чем закрывать сервер. То есть: войдите в веб-консоль, перейдите к Runtime (вкладка в правом верхнем углу) -> Управление развертываниями (меню) -> Кнопка «Отключить» для вашего приложения.

В WildFly 8 вы получаете опцию «тайм-аут» для выключения. См. this post о том, как его использовать.

Смежные вопросы