Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Один порт, очередь, сервлет / 9 сообщений из 9, страница 1 из 1
12.03.2013, 07:59:51
    #38180732
mr.Jack
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один порт, очередь, сервлет
Здравствуйте.
Есть сервлет, он получает запрос от клиентов.
Формирует свой запрос и обращается к внешнему сервису (через DatagramSocket).
Получает ответ от сервиса (через DatagramSocket), проверяет его.
Если первый бит == 1, то следующим должен придти пакет данных на определенный порт, 33333 например:
Создается DatagramSocket, ожидающий входящий пакет на 33333:
Код: java
1.
datagramSocketReceive = new DatagramSocket(33333);


делает receive();
отвечает клиенту
оба сокета закрываются

Проблема в следующем. Если клиентов больше одного, то порт 33333 бывает занят, вываливает SocketException c Address Already In Use.
Я пытался блокировать соединение с портом 33333 таймаутом(datagramSocket.setSoTimeout(60000)), но это не выход и работает не всегда.

Как выйти из ситуации, когда каждый клиент хочет получить данные, а сервлет для этого должден получить пакет на определенном порту?

Первое что приходит в голову - организовать очередь. Но как это сделать на сервлете? Создать какое-нибудь глобальное хранилище.. кажется это велосипед.

Подскажите пожалуйста правильный путь
...
Рейтинг: 0 / 0
12.03.2013, 08:38:21
    #38180755
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один порт, очередь, сервлет
mr.Jack,
Очередь это складировать данные в субд
...
Рейтинг: 0 / 0
12.03.2013, 10:36:28
    #38180863
irbis_al
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один порт, очередь, сервлет
Ну если есть конкуренция за ресурс надо использовать синхронизацию
либо метод sinhronized либо static semaphore
В этом случае потоки будут сами в JVM очереди стоять
...
Рейтинг: 0 / 0
12.03.2013, 10:50:34
    #38180884
Лагман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один порт, очередь, сервлет
Вы можете всегда слушать порт 33333 из одного потока, собирать оттуда пакеты в список, потом в том месте где "Создается DatagramSocket, ожидающий входящий пакет на 33333" выбирать нужный пакет из списка.
...
Рейтинг: 0 / 0
12.03.2013, 22:31:19
    #38182140
mr.Jack
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один порт, очередь, сервлет
Лагман, но в случае сервлета, его инстанс создается для каждого нового клинета, т.е. единой "точки ожидания" на порту 33333 не получится же, или я вас не понял?

Petro123, да, теперь я думаю об этом.

Использовал синхронизацию, тепеь думаю над архитектурой.

Какие технологии тут лучше использовать? Столит ли делать веб сервис, или нет принципиальной выгоды, вообще, любая информация мне поможет
...
Рейтинг: 0 / 0
12.03.2013, 22:44:11
    #38182149
Лагман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один порт, очередь, сервлет
mr.Jack,
listener вызывается при старте и останове контейнера
Код: java
1.
2.
3.
4.
5.
<listener>  
        <listener-class>  
              
        </listener-class>  
    </listener>






mr.JackКакие технологии
У вас власть над всеми звеньями цепи?
Посмотрите spring integration или jetty там.. или MQ какой-нибудь, что больше нравится.
...
Рейтинг: 0 / 0
13.03.2013, 11:17:40
    #38182704
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один порт, очередь, сервлет
mr.Jack,
ну, сервлет нужно по любому отвязывать от любых синхронных-тормозов.
А БД в связке с ним, хорошо отработанные вещи.
Если у вас не математическая задача полёта на Марс, то вполне.
Веб сервис счас не модно imho.
...
Рейтинг: 0 / 0
16.03.2013, 10:30:52
    #38186553
mr.Jack
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один порт, очередь, сервлет
Лагман, понял Вас, спасибо, уже читаю, это то что нужно
Petro123, а почему Вы считаете, что веб сервис сейчас не модно, можете пояснить? Я пока слабо понимаю разницу между веб сервисом и сервлетом, ну кроме того, что в веб сервисах можно использовать веб методы, но их же можно различить и в сервлете. Про WSDL файл еще читал
...
Рейтинг: 0 / 0
16.03.2013, 11:17:51
    #38186568
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Один порт, очередь, сервлет
mr.Jack,
Он задумывался для разобщенных систем. Для небольших проектов это оверхед. Как выделение класса в отдельную dll. Или как вместо простого сайта портал....
Imho
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Один порт, очередь, сервлет / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]