Как служить сокету из JAVA EE-приложения?

Мы хотели бы служить некоторым клиентским запросам в нашем сервере JAVA EE-приложения (JBoss 4.2.3). Я считал, что Java спецификация EE не позволяет открывать сокет от компонента уровня предприятия. Но спецификация не предлагает альтернатив.

А именно, компоненты уровня предприятия не должны:

  • послушайте на, примите соединения на или многоадресно передайте от сетевого сокета

Таким образом, вопрос: Что я могу сделать для обслуживания некоторого двоичного файла tcp базирующиеся протоколы (не http) из сервера приложений?

Здесь кто-то предлагает реализовать адаптер ресурса. Действительно ли это - способ, которым Вы должны пойти или являетесь там другими (более легкими) решениями?

9
задан Arjan Tijms 4 December 2012 в 20:40
поделиться

3 ответа

Прямо сейчас я реализую обходной путь:

alt text http://yuml.me/7f82bd5c

Я использую отдельное java-приложение, которое принимает tcp-вызовы от клиента и перенаправляет их как JNDI-вызовы на сервер приложения.

1
ответ дан 4 December 2019 в 21:10
поделиться

Вы правы, Поскольку вы можете объявить операции на все в Java EE, они должны поддерживаться от всех компонентов, которые вы хотите подключиться. Файлы, если какие-либо следует хранить в базе данных. Все должно контролироваться контейнером, потому что это единственный способ иметь масштабирующую приложение с использованием Java EE.

Несколько вариантов:

  • внедрить соединитель (JCA) Пример здесь: http://www.theserverside.com/tt/articles/article.tss?l=j2ee1_4 Вероятно, лучший способ, если у вас есть существующие клиенты.

  • Используйте очереди сообщений Java

  • Отношения между этими методами обсуждаются здесь http://java.sun.com/products/jms/faq.html#Relship_ejbs

  • Написать сервер, который хранит запросы в базе данных. (Нет поддержки TX)

  • , если у вас есть только один сервер и это кажется слишком много накладных расходов, вы могли бы игнорировать эти аспекты и следуйте предположению уксуса. Но если вам нужен TX позже или дополнительные узлы Эта часть должна быть переработана.

7
ответ дан 4 December 2019 в 21:10
поделиться

Ни один не доступа к файлам: (

Это в спецификации, потому что EJBS должны быть:

  • Распространенные (вы не знаете заранее, на каком сервере / экземпляре ваш EJB будет Быть развернутым
  • Контейнер должен иметь возможность управлять «все», поэтому вы не должны вызывать свои собственные потоки

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

2
ответ дан 4 December 2019 в 21:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: