Social Icons

.

суббота, 22 мая 2010 г.

J2EE деструктор

Задача

Требуется понять, что J2EE приложение выгружается, обновляется или еще каким-то способом уничтожается. Понимание такое требуется для освобождения занятых ресурсов (например, глушения прослушивания TCP порта)


Решение.

Где-то в Dinamic Web Project:
1. Создаем класс, наследованный от ServletContextListener.
2. Реализуем в нем методы (обработчики) contextInitialized и contextDestroyed
3. Описываем его в web.xml в разделе listener

Результат:

При старте приложения, до вызова всевозможных методов init() и прочих @PostConstruct, будет вызван методо созданного класса contextInitialize.
При завершении работы приложения, при его остановке или выгрузке, но еще до уничтожения объектов (бинов сервлетов и пр.) будет вызван методо  contextDestroyed.

Пример


import javax.ejb.EJB;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import ru.itsph.iqwave.renegade.api.ITcpControler;

public class TcpDestroyListener implements ServletContextListener {
 private  Logger log = Logger.getLogger(TcpDestroyListener.class.getName() );
 
 @EJB(name="TcpControler")
 ITcpControler theControler;
 
    public TcpDestroyListener() { ; }

    public void contextInitialized(ServletContextEvent arg0) {
     log.info("TCP context initialisation");
    }

    public void contextDestroyed(ServletContextEvent arg0) {
     log.info("TCP context destroyed");
     if(theControler != null) theControler.stopAll();
     else log.info("Out of TcpControler");
     
    }
}



<web-app ...>
...
    <listener>
        <listener-class>ru.itsph.iqwave.renegade.web.TcpDestroyListener</listener-class>
    </listener>    
...
</web-app>

Кроме того:

На самом деле, эта технология гораздо богаче. Почитать о ней можно здесь
Поток сознания на эту тему можно почитать здесь.

Комментариев нет:

Отправить комментарий

 

Так говорил Учитель:

У хорошо написанной программы есть свой собственный рай, у плохо написанной — свой собственный ад.

Russian Developer

Взгляд его светел, усилия праведны, старания бесплодны, дело безнадежно ...