Ответ
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-операций.