2013-08-05 2 views
0

Мне нужно написать наблюдателя папки, который будет работать в JBoss. Идея состоит в том, что как только файл появится в папке, мы должны обработать файл и перенести его где-нибудь. Я написал простой Java-класс, который будет использовать Java 7 NIO и наблюдать за этой папкой. Когда в папке появляется файл, я перемещаю его в другую папку и обрабатываю. В настоящее время то, что я сделал, - это как только появится файл. Я перемещаю его и создаю новый поток для его обработки. Так как это предполагается для запуска в JBoss, я понимаю, что создание потоков в JBoss - это не способ сделать это, и я должен использовать очереди сообщений. Поэтому я собираюсь изменить класс и вызвать очередь и передать ему объект местоположения файла и ожидать, что JBoss обработает его. Мой вопрос в основном я делаю это правильно? это правильный способ сделать это в JBoss? Любой процесс, который я хочу сделать с несколькими задачами, должен выполняться с очередями сообщений?folder observer in jboss

Спасибо заранее,

Шарон

ответ

0

Вы не должны создавать не-управляемые потоки в контейнере. JBoss AS 7/EAP 6 предоставляет возможность определить собственные пулы потоков и разрешить контейнеру приложения управлять этими потоками. Если вы хотите использовать потоки для этого, вы должны использовать пул потоков, управляемый контейнером. В противном случае будет реализована реализация, основанная на передаче сообщений.

0

Я не совсем уверен, почему это приложение нужно запускать в контейнере/JBoss. Отложив это, один из вариантов - использовать ориентированную на сообщения модель с использованием JMS-очередей/тем вместо обращения к файлам.

Другой вариант - создать JEE6 timer service, который будет выполнять ваш код для перемещения файлов с определенным интервалом. Таким образом, в этом случае JBoss будет управлять вашими потоками, используя пул потоков ejb.