Глобальное событие запуска сервера

Материал из BiTel WiKi

Перейти к: навигация, поиск

В биллинге (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 какого-нибудь существующего модуля, то эта строчка затрется при обновлении.

Тешимся!

Файл:onStartup.jpg

log # tail -1 server.error.log
script 08-04/15:13:23 ERROR [pool-1-thread-1] test - test!
Личные инструменты