Работа с уникальным потоком в Apache Tomcat - PullRequest
0 голосов
/ 05 декабря 2011

ОКРУЖАЮЩАЯ СРЕДА
Мы используем Apache Tomcat для связи визуального уровня (actionscript - flex) с бизнес-уровнем (Java) .Эта связь используется для большого количества запросов, визуального запроса данных в БД и множества операций.

ПРОБЛЕМА
Проблема в том, что мы взаимодействуем с камера, которая поддерживает только один сеанс одновременно , и насколько я знаю apache tomcat создает множество потоков , которые пытаются одновременно соединиться с камерой.

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

БЫТЬ БОЛЬШЕ ОСОБЕННЫМ
Во всех других методах, которые взаимодействуют с камерой, нет проблем, поскольку мы делаем следующие шаги:

1-сессия с камерой
2 - сделать что-нибудь с камерой
3-отпустить камеру

Этот шаг отлично работает сПочти все методы (например, фотографирование или загрузка темы на компьютер), но для просмотра в реальном времени мы не можем противопоставить сеанс и закрывать его каждый раз (потому что это делает важную задержку, и камера должна быть готова), поэтомумы должны оставить сеанс противоположным во время просмотра в реальном времени, процедура выглядит примерно так:

Первое изображение в реальном времени
1-сессия с кулачком
2-скачивание фото в реальном времени

Второе и следующее фото
1-скачивание фото в реальном времени

Finalкартинка в реальном времени
1-загрузка картинка в реальном времени
2-релиз камеры

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

ЗАКЛЮЧЕНИЕ
Проблема в том, что Томcat создает много потоков, когда java соединяется с визуальным слоем, но если поток хочет получить доступ к камере, а сеанс был заблокирован для другого, tomcat замораживается ...

THEВОПРОС
Есть способ заставить Apache Tomcat работать с особым потоком для вызова метода Java ???

NOTE
Отлаживаем и пытаемсявсе методы в easy eclipse работают с одним потоком и все работает нормально ...

Ответы [ 2 ]

1 голос
/ 05 декабря 2011

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

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

0 голосов
/ 06 декабря 2011

Решение, которое я нашел

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...