Java: быстрый и общий шлюз Data to Soap

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

Справочная информация: не Java-приложение, которое должно вызывать SOAP-Services, не может генерировать json или SOAP/XML, но легко генерирует собственный протокол (который находится под нашим контролем).

Так что прокси нужен. Этот прокси-сервер не следует переписывать при каждом изменении WSDL или развертывании следующего Web-сервиса.

Мой план:

  • иметь URL, порт и имя службы (url: порт / имя службы) в качестве "строгих" определенных параметров этого прокси,

  • иметь действие SOAP как "строгий" определенный параметр

  • запросить (возможно, кешировать) wsdl url:port/service-name?wsdl и инициировать вызов заглушки динамически (кешируется),

  • заполнить значения, которые присутствуют во вложенной карте, к этой заглушке

  • позвоните в SOAP-сервис

  • преобразовать ответ обратно в этот двоичный протокол.

Если некоторые необходимые значения отсутствуют, он должен отправить эквивалент ошибки SOAP.

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

Я вижу несколько возможностей:

а) Использование ESB, как WSO2ESB. Там я реализовал бы потоковый формат в качестве специального адаптера входного формата, преобразовал бы его во внутренний XMLStream (по крайней мере, json-адаптеры, кажется, работают таким образом) и отправил бы его посреднику. Этот посредник попробует что-то вроде в http://today.java.net/pub/a/today/2006/12/13/invoking-web-services-using-apache-axis2.html "Создание динамического клиента" и вызовет SOAP-Сервис напрямую.

б) использование MOM-Middleware, такого как ApacheMQ с Camel,

в) сократить его до чего-то вроде Apache Karaf и CXF

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

Мысли а)

  • минус: немного странно не иметь ESB-Target, так как посредник будет напрямую вызывать данные SOAP-запросы

  • минус: интересно, если внутреннее преобразование в XML-Stream не будет стоить дополнительного времени и ресурсов

  • минус: изменение кода требует перезапуска WSO2ESB, насколько я понял

  • плюс: вместо url, port, service-name я мог бы определить символические имена, которые разрешаются с помощью ESB - если это не занимает лишних миллисекунд.

Для б) я еще не проверил, насколько легко эти преобразования формата выполняются в Camel и соответствуют ли SOAP-Service-Requests отправке и очереди сообщений.

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

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

Спасибо за любые квалифицированные комментарии!

Marco

0 ответов

Другие вопросы по тегам