2010-02-18 3 views
1

Мне нужно создать приложение Swing, которому нужно будет отправить несколько заданий по желанию клиента. каждое задание запускает те же сценарии оболочки, что и для возврата значения займет 10-30 минут. (задания не выполняются на сервере приложений или в виде веб-сервисов.) Затем приложение Swing должно будет решить, что делать дальше в соответствии с возвращаемым значением. мой вопрос в том, могу ли я использовать JMS для отправки заданий. если нет, что вы предлагаете мне заглянуть? многопоточность ....может использовать JMS в Java Swing App

спасибо!

ответ

4

Multi-threading - очевидное первое приближение здесь. Взгляните на SwingWorker, запустите процесс в фоновом потоке, следите за ходом (как показано пользователем, если он все еще работает, возможно даже представление о том, что излучается на консоль) и т. Д. Это очевидный выбор ,

Что JMS решит для вас (и вам нужно будет найти реализацию JMS легкого веса, которая будет работать на рабочем столе), чтобы разрешить повторы и гарантировать, что процесс завершится. Что-то, что занимает 20 минут для запуска в сценарии оболочки, не похоже на то, что оно является кандидатом на повторную попытку, но если это так, и важно, чтобы сообщение действительно прошло, вместо того, чтобы просто уничтожить поток и процесс забыли если пользователь закрывает приложение java, то JMS - это тип вещи, на который нужно смотреть.

+0

Благодарим вас за предложение! Я посмотрю SwingWorker. – mengmenger

2

JMS можно, безусловно, использовать в приложении на основе Swing. Если скрипты оболочки должны выполняться на сервере службой, которая слушает очередь JMS и отвечает на другую очередь или тему.

Нет ничего ограничивающего использования JMS-очередей или тем в настольном приложении.

+0

Я получил то, что вы сказали. сценарии оболочки не будут выполняться на сервере службой. это приложение для чистого качания. Я думаю, что буду рассматривать многопоточность. Спасибо! – mengmenger

+0

Вам действительно нужно многопоточное приложение Swing, если вы хотите запускать длинные задачи в локальной системе. – orj

2

JMS обычно используется для связи между процессами и между клиентом/сервером, а не тем, что вы ищете здесь, если вы не отправляете их на сервер, который должен быть обработан, но это не похоже на то, что Вот. Похоже, что вы ищете рабочую очередь, так что у swing-приложения есть кнопка, которая добавляет новую задачу в очередь (где задача запускает сценарий оболочки). Затем у вас может быть несколько потоков, которые выполняют задачи очереди и запускают скрипты.

+0

спасибо! Я буду использовать многопоточность. – mengmenger

1

Вы можете - или не можете - получать прибыль от использования планировщика заданий, такого как Quartz. Возможно, это слишком много, возможно, это именно то, что вам нужно.

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