SAX шаблон проектирования сбора данных - PullRequest
0 голосов
/ 25 января 2012

Я новичок в разработке на Java и ищу общие шаблоны проектирования для приложения для сбора данных, написанного на Java.Я уже написал прототип, который является базовым консольным приложением Java, которое использует SAX для извлечения данных и их хранения в базе данных.

Очевидно, что это не веб-приложение, поэтому запускать его не нужнов контейнере, как Tomcat, но что люди порекомендуют?В настоящее время приложение использует базовый таймер Java для запуска каждые 5 минут.

Итак, основные требования, о которых я могу подумать:

  1. . Это должно выполняться постоянно, так что есливылетает, его нужно перезапустить.
  2. Он должен выполнять свою работу каждые 5 минут, поэтому ему нужен таймер.
  3. Он может использовать Hibernate, но не еслиэто создает любые накладные расходы, так как это приложение, требующее больших затрат времени.

Итак, я ищу такие предложения, как:

Вы можете в любом случае запустить Thumbumbob-виджет таймера под Tomcat иполучите требование # 1 .... или Spring 99 имеет все необходимые функции.

и т. д.

1 Ответ

0 голосов
/ 25 января 2012

Для этого типа приложений у вас может быть основной процесс, который порождает поток, который выполняет реальную работу.Этот поток будет в цикле, который в основном проверяет, должен ли он работать или нет.Если он работает, он продолжается.Как только он выполнит свою работу, вы можете использовать Thread.sleep (msToSleep), чтобы перевести поток в спящий режим на 5 минут.Так что это будет идти в непрерывном цикле работы и сна.Не требуется таймер.Основной процесс может «пропинговать» поток, чтобы увидеть, если он все еще функционирует и не порождает ли новый поток.В зависимости от ОС существуют похожие методы, позволяющие убедиться, что основной процесс запущен.Использование ORM, такого как Hibernate, увеличит накладные расходы, поэтому вам придется искать компромисс между производительностью транзакций и простотой разработки.Если вы сами конвертируете свои данные в объекты, вам придется использовать профилировщик, чтобы увидеть, действительно ли вы реализуете его более эффективно, чем ORM.

...