2014-08-20 4 views
0

Я программист на Python, у нас есть интерфейс python для веб-проекта, где мы используем веб-сервер Python (Tornado), чтобы предлагать веб-службы REST.Expose SOAP 1.2 веб-сервис из java, который вызывает другую службу REST

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

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

Possible solution to offer JAVA soap interface which calls REST Python back-end

То, что я в настоящее время ищу это:

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

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

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

+0

просто используйте spring-ws – Forhad

ответ

0

Употреблять вашу службу Python REST, проверить этот ответ:

Calling a web service with no wsdl

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