Глобальное событие запуска сервера
Материал из BiTel WiKi
(→Тешимся!) |
(→Тешимся!) |
||
Строка 89: | Строка 89: | ||
[[Файл:onStartup.jpg]] | [[Файл:onStartup.jpg]] | ||
- | <source lang=" | + | <source lang="shell"> |
log # tail -1 server.error.log | log # tail -1 server.error.log | ||
script 08-04/15:13:23 ERROR [pool-1-thread-1] test - test! | script 08-04/15:13:23 ERROR [pool-1-thread-1] test - test! | ||
</source> | </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 какого-нибудь существующего модуля, то эта строчка затрется при обновлении.
Тешимся!
GeSHi Error: GeSHi could not find the language shell (using path /home/user/wiki.bitel.ru/mediawiki-1.15.1/extensions/SyntaxHighlight_GeSHi/geshi/geshi/) (code 2)
Вы должны указать язык следующим образом: <source lang="html">...</source>
Поддерживаемые языки:
abap, actionscript, ada, apache, applescript, asm, asp, autoit, bash, basic4gl, blitzbasic, bnf, c, c_mac, caddcl, cadlisp, cfdg, cfm, cpp, cpp-qt, csharp, css, d, delphi, diff, div, dos, dot, eiffel, fortran, freebasic, genero, gml, groovy, haskell, html4strict, idl, ini, inno, io, java, java5, javascript, latex, lisp, lua, m68k, matlab, mirc, mpasm, mysql, nsis, objc, ocaml, ocaml-brief, oobas, oracle8, pascal, per, perl, php, php-brief, plsql, python, qbasic, rails, reg, robots, ruby, sas, scheme, sdlbasic, smalltalk, smarty, sql, tcl, text, thinbasic, tsql, vb, vbnet, vhdl, visualfoxpro, winbatch, xml, xpp, z80