LINUX.ORG.RU

Бинарный протокол на вход веб-сервера

 , ,


0

1

Всем привет.

Подскажите, как лучше решить такую задачу.
Есть веб-сервер GlassFish с веб-сервисами. И есть клиентские приложения со своим бинарным протоколом. Нужно где-то сделать конвертер протокола из бинарного в HTTP/SOAP и наоборот. Пока это делается отдельным standalone-приложением, которое слушает порт, парсит входящий бинарный трафик и вызывает соответствующие веб-сервисыы на сервере. Хотелось бы отказаться от этого приложения и сделать конвертер на веб-сервере. И еще хотелось бы, чтобы штатный балансировщик нагрузки кластера веб-серверов направлял входящий бинарный трафик на разные ноды кластера.

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

А есть более правильные решения этой задачи?



Последнее исправление: cetjs2 (всего исправлений: 1)

Хотелось бы отказаться от этого приложения и сделать конвертер на веб-сервере.

Что не так? Не справляется с нагрузкой? Такой тяжелый протокол?

baverman ★★★
()
Ответ на: комментарий от baverman

Хотелось бы избавиться от лишнего приложения. Чтобы не пришлось его самим разрабатывать и сопровождать. Потом балансировщик нагрузки для кластера с этим приложением тоже самим писать и сопровождать придется...
По сути это же типовая задача по интеграции с внешними системами. Наверняка уже есть средства её решения. Наверное, как-нибудь через адаптеры можно сделать. Хотелось бы узнать о реализованных подобных проектах, если у кого есть. Как проще/стандартнее/быстрее/дешевле сделать-то?

vaadim
() автор топика

Во времена древних египтян legacy протоколы вписывались в java ee посредством технологии JCA. Не знаю статус этой технологии сейчас

vertexua ★★★★★
()

Можно ли представить ваш протокол в виде асинхронных сообщений? Если да, то конверируете сообщения и пихаете в очередь JMS

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от vaadim

Наверное, как-нибудь через адаптеры можно сделать.

До таких дебрей не опускался. По мне, текущая своеобразная прокся, вполне неплохое решение.

baverman ★★★
()
Ответ на: комментарий от vaadim

Знаете, одно умеет превращаться в другое, не нужно занимать Thread, отвечайте в сокет по получении ответного jms с corellation is

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от vaadim

На вскидку, у меня не было такой задачи как у вас. Но берете netty. По получении сообщения отправяете его в jms плюс Id сокетного соединения. Обрабатываете, в ответ вкладываете этот id, получаете его в netty, отвечаете в сокет. Из профитов - thread на netty свободен во время работы бизнес логики

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)

А есть более правильные решения этой задачи?

вот же оно:

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

при необходимости балансировщик запилить туда же

redixin ★★★★
()
20 февраля 2014 г.

А если отнаследоваться от сервлета, ничего не получится? HTTP в HttpServlet, а просто Servlet по идее протоколонезависимый.

Legioner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.