Про то, как настроить JBoss на выполнение программы в заданное время Страница 2

Публикуем проект на JBoss

Для этого надо обратить внимание на пару моментов. JBoss уже содержит в себе средство для периодического запуска программ — scheduler-plugin.jar. Чтобы его подключить и настроить сделаем следующие вещи: Подключим интерфейс Schedulable и добавим необходимый метод:

 public class CurrencyUpdater implements Schedulable {

 ...

 public void perform(Date arg0, long arg1) {

 try {
  parseURL(urlCurrrencyString);
 } catch (IOException e) {
  e.printStackTrace();
 } catch (SAXException e) {
  e.printStackTrace();
 }

 try {
  updateCurrencyTableByCurrencyCode();
 } catch (SQLException e) {
  e.printStackTrace();
 }

 }

Добавим schedule-service.xml в META_INF архива ear. В нем как видно прописаны основные настройки сервиса для нашего файла CurrencyUpdater. Назначение их довольно очевидно из названий.

 <?xml version="1.0" encoding="UTF-8"?>
 <server>
  <mbean code="org.jboss.varia.scheduler.Scheduler" name="acme:service=Scheduler">
   <attribute name="StartAtStartup">true</attribute>
   <attribute name="SchedulableClass">schedule.ejb.CurrencyUpdater</attribute>       
   <attribute name="InitialStartDate">NOW</attribute>
   <attribute name="SchedulePeriod">60000</attribute>
   <attribute name="InitialRepetitions">-1</attribute>     
  </mbean>
 </server>

И последнее добавим туда же jboss-app.xml.

 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE jboss-app PUBLIC "-//JBoss//DTD J2EE Application 4.2//EN" "http://www.jboss.org/j2ee/dtd/jboss-app_4_2.dtd">
  
 <jboss-app>
  <module>
   <service>META-INF/schedule-service.xml</service>
  </module>   
 </jboss-app>

В результате мы получили сервис, который будет стартовать при публикации нашего приложения. Если необходимо сделать глобальную настройку сервера JBoss, тогда файл настройки надо скопировать в папку jboss/server/default/deploy/schedule-service.xml. При этом к моменту чтения этой настройки, JBoss должен видеть класс, который планируется запускать.

Теперь просто запустите сценарий Ant и JBoss. После старта таблица schedule_table сразу же будет обновлена из XML взятого по адресу: urlCurrrencyString = http://localhost:8080/scheduler/currency.xml Несложно догадаться, что если набрать в строке браузера этот адрес, то появиться содержание XML файла.

Файлы, используемые в статье

Страница:

  • 1

  • 2

Александр Смелков
Санкт-Петербург Зима 2008