Как написать длинный инициал в веб-приложении - PullRequest
0 голосов
/ 05 апреля 2011

Я использую glassfish для запуска веб-приложения. Я работаю с NetBeans.

Моему веб-приложению нужен очень длинный инициат.

Я пишу это в ServletContextListener.contextInitialized методе.

Я вставил в свой код несколько журналов.

Если я напишу свой код инициализации в методе contextInitialized, мне кажется, что кто-то прервал инициализацию: журналы на мгновение останавливаются, я не понимаю, почему.

Если я напишу свой код внутри подпотока, там вообще не будет журнала.

Каков наилучший способ выполнить длинную инициализацию в веб-приложении?

Спасибо.

Ответы [ 2 ]

1 голос
/ 22 августа 2012

ServeletContextListener - это хорошее место, чем init сервлета.Если по какой-то причине (нехватка ресурсов или проблема с управлением памятью) контейнер уничтожит сервлет и создаст его заново, то это может привести к повреждению данных для других сервлетов в том же приложении.

Попробуйте выяснить причину остановки исохранить ServletContextListner как есть

0 голосов
/ 05 апреля 2011

Возможность иметь сервлет load-on-startup.Выполните загрузку сервлета при запуске следующим образом:

<web-app>

 <servlet>
    <servlet-name>InitProcess</servlet-name>
    <servlet-class>com.my.ServletName</servlet-class>
    <load-on-startup>1</load-on-startup>
 </servlet>

</web-app>

Сервлет будет загружен при запуске, и init(), метод сервлета будет вызывать контейнер.Там может быть ваш код.

Число в <load-on-startup> определяет порядок загрузки сервлетов.Смотрите здесь .Это поддерживается Tomcat и Weblogic, по крайней мере.


Чтобы получить ServletContext, используйте:

 ServletContext ctx = getServletContext();

См. этот блок кода на Java2s

...