MICROGAMES.RU v.2

Новости, примеры, статьи о программировании

-10
-1
-6
-7
Java Java
up C++
up PHP
up Perl

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

Окружение.

Итак, задача довольно проста и понятна. Если Вы хотите запустить пример, то вам необходимо иметь базу данных MySQL и сервер приложений JBoss. В моем распоряжении имеется JBoss 4.2.1 GA Порт по умолчанию 8080. База данных MySQL 6.0.2. Java, которая установлена на моем компьютере, имеет номер 6.0.3.

База данных.

Начнем с создания базы данных примера. Назовем ее schedule и сразу создадим табличку sheduler_table с полями id — по привычке, currency — код валют. Он не бывает более 3 символов, value — значение котировки валют и last_update — в этом поле будет автоматически проставлена дата последнего обновления таблицы.

	
 CREATE TABLE schedule_table 
 (
  id integer (11) NOT NULL AUTO_INCREMENT , 
  currency varchar (27), 
  value float (10,5), 
  last_update timestamp NOT NULL,
  PRIMARY KEY (id)
 ) TYPE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;

Пишем код.

Далее я просто создал Java проект в Eclipse. Я все делал в Eclipse — мне так удобно. Но сборка архива для публикации в JBoss будет происходить при помощи простого Ant сценария. Давайте сразу посмотрим, как будет выглядеть конечный ear файл:

	
  schedule-test.ear.ear
   META-INF
    application.xml
    jboss-app.xml
    schedule-service.xml
  schedule-ejb.jar
    META-INF
     MANIFEST.MF
     schedule
      ejb
       CurrencyUpdater.class
  schedule.war
    META-INF
     MANIFEST.MF
    WEB-INF
     web.xml
    

Класс schedule.ejb.CurrencyUpdater является самым главным в этом приложении. Но прежде чем начать его рассматривать надо скопировать три библиотеки в папку lib в корень проекта: 2 из jboss/server/default/lib/scheduler-plugin.jar и jboss/server/default/lib/servlet-api.jar и одну из другого места — mysql-connector-java-5.0.8-bin.jar (если у Вас нет такого места, можно найти ее тут: http://dev.mysql.com/downloads/connector/j/5.1.html). Просто подключите их к проекту Eclipse(Project/properties/Java Buidl Path/Libraries/Add JARs…). Эти библиотеки понадобятся только тестирования и заполнения базы данных в первый раз.

Итак. Метод parseURL открывает URL с XML файлом котировок валют и заполняет HashMap cMap. Следующий метод — insertCurrencyTable() всего лишь заполняет значениями таблицу schedule_table. В реальном приложении Connection берется из другого места при помощи dependency injection. Здесь все проще — соединение получаем тут же из метода getMySQLConnection().

	
 private void parseURL(String url) throws IOException, SAXException
 {

  DOMParser parser = new DOMParser();
  parser.parse(url);
  Element element = parser.getDocument().getDocumentElement();
  NodeList pages = element.getElementsByTagName("Day");
  for (int i = 0, maxCount = pages.getLength(); i < maxCount; i++)
  {
   Element e = (Element)pages.item(i);
   cMap.put(e.getAttribute("currency"), 
   Float.valueOf(e.getAttribute("rate")));
  }
 }

 private void insertCurrencyTable() throws SQLException, OException, SAXException{

  parseURL("currency.xml");
  Connection conn = getMySQLConnection();
  PreparedStatement psInsertCurrency = conn.prepareStatement("insert into schedule_table set currency=?,value=?");
  for(String s : cMap.keySet()){
   psInsertCurrency.setString(1, s);
   psInsertCurrency.setFloat(2, cMap.get(s));
   psInsertCurrency.executeUpdate();
   psInsertCurrency.clearParameters();
  }
  psInsertCurrency.close();
  conn.close();
 }

 private Connection getMySQLConnection(){
  try {
   Class.forName("com.mysql.jdbc.Driver");
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  }
  String url = "jdbc:mysql://localhost:3306/schedule";
  Connection con = null;
  try {
   con = (Connection) DriverManager.getConnection(url, "root","");
  } catch (SQLException e) {
   e.printStackTrace();
  }
  return con;
 }		
	

Убедимся в том, что файл с тестовыми котировками лежит в корне проекта — currency.xml. Запустим CurrencyUpdater, для того чтобы убедиться в его работоспособности. Из метода main должен запуститься insertCurrencyTable()и заполнить таблицу данными из файла currency.xml. После того как это произошло, нам осталось только собрать архив и сказать серверу приложений JBoss, чтобы он запускал программу через определенные промежутки времени.

Страницы: 12

Новое сообщение

  Имя
  Email (не обязательно)
  Номер

Microgames.ru v.2 - Новости, примеры, статьи о программировании.
Сделано в 2006 году. Перевыпущен в 2008 году.
Сайт содержит оригинальные материалы и переводы.
Сообщения об ошибках просьба присылать по адресу: contact@microgames.ru