Глобальное событие запуска сервера
Материал из BiTel WiKi
Версия от 07:11, 4 августа 2011; Cromeshnic (Обсуждение | вклад)
В биллинге (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!