Что вы знаете о протоколе SOAP?

«Что вы знаете о протоколе SOAP?» — вопрос из категории Сети, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

SOAP (Simple Object Access Protocol) — это протокол на основе XML для обмена структурированными сообщениями в веб-сервисах. В Java для работы с ним используется стандарт JAX-WS (Java API for XML Web Services).

Ключевые характеристики:

  • Формат: Строго типизированные XML-сообщения, описываемые WSDL (Web Services Description Language).
  • Транспорт: Может работать поверх HTTP, SMTP, JMS и др.
  • Преимущества: Стандартизированная безопасность (WS-Security), надежные транзакции (WS-AtomicTransaction), строгая схема данных.
  • Недостатки: Избыточность XML (большой размер сообщений), сложность по сравнению с REST.

Пример простого SOAP-сервиса на JAX-WS:

import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService
public class CalculatorService {
    @WebMethod
    public int add(int a, int b) {
        return a + b;
    }
}

Клиентский код (сгенерированный из WSDL):

CalculatorService service = new CalculatorService();
Calculator port = service.getCalculatorPort();
int result = port.add(5, 3); // result = 8

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