Создание оболочки 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. постарайтесь оставаться верным отдыху и усложнить переводческий слой... это того стоит.