Чтение из DatagramSocket в среде Java EE (EJB 3.0) - PullRequest
1 голос
/ 18 января 2011

В моем приложении на основе JBoss (версия 5) мне нужно прослушивать UDP-пакеты.

Самый простой способ (и, вероятно, единственный) - открыть DatagramSocket на определенном порту (используя JBoss @Service singletonbean) и вызовите метод получения (...).Первая часть довольно проста - я протестировал ее и работает как положено.Вторая часть - получение пакетов более сложное.

Меня интересует дизайн такого кода.Как указано в DatagramSocket javadoc, получение является блокирующей операцией - оно блокируется до получения пакета.Как написать код, чтобы убедиться, что он быстрый, масштабируемый и поточно-ориентированный?

Я думал о написании bean-компонентов без сохранения состояния, которые содержат ссылку на singleton с открытым соединением, и эти bean-объекты вызывают метод receive - но яЯ не очень уверен, как JBoss будет управлять ими (один бин вызывает receive () и пока пакет не прибудет, он заблокирован).Можно ли использовать какой-либо шаблон?

1 Ответ

0 голосов
/ 18 января 2011

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

...