2013-03-19 3 views
0

В настоящее время я работаю над проектом, создающим сервлет для программы.Запуск приложения в фоновом режиме

Этот сервлет не прослушивает запросы, вместо этого я хочу, чтобы он работал в фоновом режиме и выполнялся каждые 10 секунд.

Я использую Thread.sleep(10000); для этого.

Каков наилучший способ, чтобы этот сервлет выполнялся каждые 10 секунд, одновременно позволяя запускать другие процессы?

+0

Если вы кодируете сервлет, вам необходимо развернуть его в контейнере сервлетов. Apache Tomcat является одним из самых простых в работе. Контейнер сервлета позволяет обрабатывать другие запросы, запуская их в отдельных потоках. – jalynn2

+0

@ Ханс Хансен, что вы подразумеваете под сервлетом? см. [http://docs.oracle.com/javaee/5/api/javax/servlet/Servlet.html] –

+0

Думаю, я должен переписать его и просто сказать программу. Это веб-приложение, которое развертывается через WAR-файл. Мне нужно прикрепить к нему программу, которая может работать в фоновом режиме и запрашивать db. У меня программа работает правильно. Самая большая проблема прямо сейчас заключается в том, что запуск ее как сервлета - это прекращение выполнения всех других процессов. Поэтому я предполагаю, что на самом деле он не должен быть сервлетом, и вместо этого он должен быть чем-то другим. Есть идеи? –

ответ

0

Вы можете использовать SingleThreadPool и выполнить его с помощью QuartzScheduler. Таким образом, вы можете изменить, как часто вы хотите его выполнить, изменив только файл конфигурации. Ваша нить becames работу, вы можете назначить приоритет, и т.д.

Вот документация следующего содержания:

  1. Scheduling and Thread Pooling
  2. what is Quartz
  3. ... и a tutorial on Quartz.
0

Не используйте для этого сервлет. Он не будет работать надежно для вас, потому что сервлеты специально разработаны для ответа на запросы. Вместо этого используйте ServletContextInitializer до schedule a TimerTask, который выполняет вашу фоновую работу.

+0

Я считаю, что это сработает, но я столкнулся с проблемой. Мне нужно, чтобы WAR фактически загрузила все свои файлы, прежде чем пытаться запустить свою программу. Позвольте мне подробнее пояснить: Существует файл свойств, в котором мне нужна система для загрузки, чтобы я мог запустить мой метод, вызывая метод method(). method() возвращает ошибку, если этот файл не существует (файл не существует до тех пор, пока вся WAR не будет успешно загружена) из-за этого мне интересно, есть ли способ отложить создание слушателя контекста до тех пор, пока ВОЙНА развернута? –

+0

Тогда вы загружаете файл свойств неправильно. Исправьте это, и тогда у вас не будет проблемы. Если вам нужно руководство по этому вопросу, я предлагаю задать другой вопрос о том, чтобы дать соответствующие деатили. –

Смежные вопросы