Создайте рабочий поток и запустите его из сервлета или контроллера Spring. - PullRequest
2 голосов
/ 26 августа 2011

Я хотел бы выполнить некоторую задачу после запроса пользователя в фоновом режиме.Моя первоначальная идея - создать рабочий поток и запустить его из сервлета.Однако я не хочу, чтобы одновременно работало слишком много потоков, поэтому мне понадобится что-то вроде пула потоков.

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

Ответы [ 5 ]

5 голосов
/ 26 августа 2011

Используйте @Async для порождения асинхронных потоков;Spring может управлять ими, как и любой другой сервис, который он предоставляет.Пример сообщения в блоге: http://blog.springsource.com/2010/01/05/task-scheduling-simplifications-in-spring-3-0/

1 голос
/ 26 августа 2011

создание собственных потоков часто не рекомендуется в контейнере, так как это может испортить пул потоков, то есть в контейнере неожиданно заканчиваются потоки. Весной есть хорошая кварцевая опора, которая может делать именно то, что вам нужно, например, вы можете настроить синхронное или асинхронное фоновое задание.

1 голос
/ 26 августа 2011

Создание потоков вручную не всегда хорошо работает в среде Java EE (а иногда это запрещено контейнером).Создание фоновой задачи в Java EE часто лучше выполнить с помощью сервлета, который отвечает на сообщения (JMS).Затем вы можете отправить сообщение сервлету, чтобы он поработал.

1 голос
/ 26 августа 2011

Quartz API может использоваться для вашей задачи.

Проверьте этот пример Интеграция Quartz в приложение J2EE

0 голосов
/ 26 августа 2011

Пожалуйста, посмотрите на этот пост и Божо ответ

Открыть новую тему в Tomcat

Надеюсь, это поможет.

...