Не совсем точно знаете, как вы планируете использовать JMS, часто клиенты делают так, чтобы запросы извлекались из очереди и имели некоторое (настраиваемое) количество рабочих потоков, выполняющих запросы и обслуживающих их. В моем случае я бы использовал MDB в качестве механизма для запуска этих рабочих потоков, но это всего лишь детали реализации.
Так что я не рассматриваю потоки и JMS как альтернативу, а скорее как JMS, дающий вам управляемый способ использования потоков. Вы почти наверняка должны избегать одновременной обработки слишком большого количества запросов, поэтому вам концептуально потребуются очереди, и для этого можно использовать JMS.
Различные детали для выяснения, например, как сообщать результаты, чтобы браузер не зависал часами. Какой-то опрос Ajax или кометный пуш может быть?
Еще одна мысль - один кусок обработки, занимающий несколько часов? Это может быть полезно, если разбить на несколько шагов (опять-таки, опосредованно, возможно, очередями JMS). Таким образом, авария не возвращает все на круги своя.