2010-09-15 2 views
0

У меня возникла следующая проблема. У меня есть сервлет, который обслуживает клиентский запрос с помощью видеоклипа. Но этот видеоклип является продуктом другого потока (транскодера). Если клип не готов к загрузке, потому что поток транскодера не завершил свое задание, запрос клиента завершается с ошибкой! Любые предложения о том, как бороться с этим делом? как я могу остановить реакцию сервлета, пока перекодированный клип не будет готов к потоку?Ответ серт-серт

Заранее благодарен! Antonis

+0

http://kb2.adobe.com/cps/173/tn_17328.html –

+0

действительно полезно, спасибо – Antonis

ответ

2

Наиболее прямолинейной задачей здесь было бы использовать Future. Отправьте запрос на транскодер и дайте ему немедленно вернуть Future. Затем поток HTTP может блокировать это будущее, вызывая get, пока видео не будет готово.

Присоединение не похоже на хороший вариант для меня. Thread # присоединяйте блоки до тех пор, пока целевой поток не завершится, но завершится ли поток после выполнения задания - деталь реализации. Например, если транскодер будет использовать пул кэшированных потоков, приложение. брейки.

+0

Отличные ответы от вас обоих. Я постараюсь понять, какой из них соответствует моим потребностям. Спасибо вам обоим – Antonis

+0

Опять же, делайте это только в том случае, если он блокируется на несколько секунд. Для более длинных задач вы не можете просто держать сервлет и браузер пользователя там. – Thilo

2

Вы можете задержать выполнение сервлета обычными средствами (сон, ожидание, соединение, будущее # get).

В вашем случае это звучит так, будто вы хотите присоединиться к теме (или получить будущее), которая транскодирует видео.

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

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