Предоставьте веб-сервис SOAP 1.2 из Java, который вызывает другой сервис REST
Я программист на Python, у нас есть серверная часть Python для веб-проекта, где мы используем веб-сервер Python (Tornado) для предоставления веб-сервисов REST.
Несколько месяцев назад нас попросили предложить SOAP для клиента, и, к нашему удивлению, Python 3 имеет очень слабые возможности отображения SOAP. Мы попытались Ladon
& TornadoWS
пакеты, но оба имеют свои ограничения. Даже некоторые из них генерируют неверный ответ, который не соответствует соответствующему WSDL.
Итак, теперь я думаю, что лучший способ - создать интерфейс SOAP с Java, который будет использовать веб-сервис нашего Python-сервера. У меня есть некоторый опыт работы с Java, но в основном я использовал инфраструктуру Struts. Мне нужно найти легкое, но сильно настраиваемое решение.
То, что я сейчас ищу, это:
- Подражайте 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, проверьте этот ответ:
Чтобы создать сервис SOAP, вы должны использовать Apache CXF и Spring Framework (Spring MVC). Проверьте этот пример для деталей: http://cxf.apache.org/docs/writing-a-service-with-spring.html