Глобальное событие запуска сервера
Материал из BiTel WiKi
(Различия между версиями)
(Новая страница: «В биллинге (v5.1 на 04.08.2011) нельзя штатными средствами выполнить свой код при запуске сервера…») |
(→Тешимся!) |
||
(4 промежуточные версии не показаны) | |||
Строка 60: | Строка 60: | ||
</source> | </source> | ||
- | Сервлет и событие компилируем и закидываем в виде [[Файл:custom_server_util. | + | Сервлет и событие компилируем и закидываем в виде [[Файл:custom_server_util.zip]] jar-файла в /usr/local/BGBillingServer/lib/ |
Прописываем сервлет в data/default.web.xml: | Прописываем сервлет в data/default.web.xml: | ||
Строка 87: | Строка 87: | ||
=== Тешимся! === | === Тешимся! === | ||
+ | [[Файл:onStartup.jpg]] | ||
+ | |||
+ | <source lang="text"> | ||
+ | log # tail -1 server.error.log | ||
+ | script 08-04/15:13:23 ERROR [pool-1-thread-1] test - test! | ||
+ | </source> |
Текущая версия на 07:11, 4 августа 2011
В биллинге (v5.1 на 04.08.2011) нельзя штатными средствами выполнить свой код при запуске сервера биллинга. Это достаточно красиво можно поправить, добавив собственное глобальное скриптовое событие.
Содержание |
Howto
Пишем само событие
package ru.dsi.bgbilling.server.event; import javax.xml.bind.annotation.XmlRootElement; import ru.bitel.bgbilling.kernel.event.LocalEvent; /** * @author semen * */ @XmlRootElement public class ServerStartedEvent extends LocalEvent { private static final long serialVersionUID = -108213638853848253L; public ServerStartedEvent() { super(); } }
Пишем собственный сервлет, который будет выстреливать наше событие при старте
package ru.dsi.bgbilling.server.util; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import bitel.billing.common.BGException; import ru.bitel.bgbilling.kernel.event.EventProcessor; import ru.dsi.bgbilling.server.event.ServerStartedEvent; /** * @author semen * */ public class StartupScriptServlet extends HttpServlet { private static final long serialVersionUID = -2658268863357401652L; @Override public void init() throws ServletException { super.init(); ServerStartedEvent event = new ServerStartedEvent(); try { EventProcessor.getInstance().request(event); }catch (BGException e){ e.printStackTrace(); } } }
Сервлет и событие компилируем и закидываем в виде Файл:Custom server util.zip jar-файла в /usr/local/BGBillingServer/lib/ Прописываем сервлет в data/default.web.xml:
<servlet> <servlet-name>startupservlet</servlet-name> <servlet-class>ru.dsi.bgbilling.server.util.StartupScriptServlet</servlet-class> <load-on-startup>7</load-on-startup> </servlet>
<servlet-mapping> <servlet-name>startupservlet</servlet-name> <url-pattern>/startup</url-pattern> </servlet-mapping>
Прописываем событие в список глобальных скриптовых событий
INSERT INTO script_event_type (MID, event_mode, event_id, title) VALUES(-1, 0, "ru.dsi.bgbilling.server.event.ServerStartedEvent", "Запуск сервера");
Обратите внимание, что mid=-1, т.к. если мы укажем 0 или Mid какого-нибудь существующего модуля, то эта строчка затрется при обновлении.
Тешимся!
log # tail -1 server.error.log script 08-04/15:13:23 ERROR [pool-1-thread-1] test - test!