Предоставьте веб-сервис SOAP 1.2 из Java, который вызывает другой сервис REST

Я программист на Python, у нас есть серверная часть Python для веб-проекта, где мы используем веб-сервер Python (Tornado) для предоставления веб-сервисов REST.

Несколько месяцев назад нас попросили предложить SOAP для клиента, и, к нашему удивлению, Python 3 имеет очень слабые возможности отображения SOAP. Мы попытались Ladon & TornadoWS пакеты, но оба имеют свои ограничения. Даже некоторые из них генерируют неверный ответ, который не соответствует соответствующему WSDL.

Итак, теперь я думаю, что лучший способ - создать интерфейс SOAP с Java, который будет использовать веб-сервис нашего Python-сервера. У меня есть некоторый опыт работы с Java, но в основном я использовал инфраструктуру Struts. Мне нужно найти легкое, но сильно настраиваемое решение.

Возможное решение - предложить мыльный интерфейс JAVA, который вызывает REST Python back-end

То, что я сейчас ищу, это:

  • Подражайте WSDL в точности так, как это выглядит в существующем WSDL нашего клиента (клиент будет использовать наш сервис, но он хочет внести минимальные изменения).
  • 100% действительный ответ мыла /xml и WSDL! (Удивительно, но некоторые сторонние пакеты Python, которые мы пробовали, генерируют неверный ответ). Сервис SOAP будет использоваться платформами.NET.
  • Мы должны иметь максимальный контроль над сгенерированными именами элементов и пространствами имен WSDL, чтобы клиент мог прозрачно переключаться на наши веб-сервисы.
  • Легкое решение для предоставления сервисов SOAP 1.1 и 1.2 в Java, которое будет масштабируемым для множества одновременных запросов.
  • Этот Java-интерфейс будет вызывать веб-сервис REST нашего Python-интерфейса. Поэтому я ищу что-то, что специально подходит для этой цели.
  • Прямо сейчас мы используем nginx + tornado для наших веб-сервисов REST, я ищу что-то подобное в Java. Специально для решения проблемы c10k. В основном то, что делает интерфейс Java, будет просто принимать запросы SOAP, делать HTTP-вызовы и возвращать эти ответы. Поэтому я думаю, что разумно ожидать чего-то похожего на Tornado, которое предлагает неблокирующий сетевой ввод-вывод и хорошо масштабируется.

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

Я также открыт для других возможных решений для решения нашей проблемы.

1 ответ

Чтобы воспользоваться вашим сервисом Python REST, проверьте этот ответ:

Вызов веб-службы без wsdl

Чтобы создать сервис SOAP, вы должны использовать Apache CXF и Spring Framework (Spring MVC). Проверьте этот пример для деталей: http://cxf.apache.org/docs/writing-a-service-with-spring.html

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