Создание оболочки REST поверх существующего веб-сервиса SOAP

Моя команда разрабатывает оболочку REST-сервиса поверх существующего веб-сервиса на основе SOAP. Мы точно не знаем внутренности SOAP-сервиса, просто имеем доступ к файлу WSDL. Наша сервисная оболочка REST будет отображаться только один к одному.

Я знаю, что в действительности он не придерживается философии REST, хотя, пожалуйста, позвольте мне назвать это услугами REST. Эта служба REST будет развернута на Tomcat, и многие клиенты будут получать к ней доступ одновременно.

Текущая реализация заключается в том, что для каждого клиента мы будем создавать прокси-объект (используя прокси-класс SOAP WSDL). Этот прокси-объект будет использоваться для вызова API SOAP. SOAP требует привязки деталей аутентификации к прокси-объектам, поэтому мы сохраняем эти объекты для каждого клиента в памяти во время выполнения, делая первый вызов REST для установления сеанса.

Сохраненный объект извлекается во время выполнения с использованием идентификатора SessionID. Теперь проблема в том, что эти прокси-объекты занимают большие куски памяти, и поддерживаются только несколько клиентов REST. (По умолчанию 64 МБ могут работать только 19 REST-клиентов). Это проблема, теперь мы хотим изменить подход и потребуем ваших предложений.

Пожалуйста, дайте мне знать, если есть какое-либо лучшее решение. Мы не хотим, чтобы БД хранила объекты.

1 ответ

Если все, что вы можете сделать, это вызвать службу HTTP/Soap и не иметь доступа к коду, то вы создаете свои службы REST, используя надлежащие соглашения REST, а затем реализуете преобразование в вызовы службы SOAP. Вы создаете клиентские классы SOAP автоматически от WSDL, и это сэкономит вам время.

Но вам нужно будет написать собственный слой перевода и не создавать набор хакерских сервисов REST, а пытаться вписать его в модель SOAP. постарайтесь оставаться верным отдыху и усложнить переводческий слой... это того стоит.

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