Skip to content

dias-andre/learn-soap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SOAP API com Spring Boot & Contract-First Design

Java Spring Boot SOAP

Este projeto é uma implementação de referência de um Web Service SOAP utilizando Java 25 e Spring Boot.

O objetivo principal foi explorar a abordagem Contract-First (Contrato Primeiro), onde a lógica de negócios e as classes Java são geradas estritamente a partir de definições formais em XML (XSD).

Tecnologias e Conceitos

  • Java 25: Utilização das features mais recentes da linguagem.
  • Spring Web Services: Framework para criação de endpoints SOAP robustos.
  • JAXB (Jakarta XML Binding): Para Marshalling (Objeto -> XML) e Unmarshalling (XML -> Objeto).
  • Maven & JAXB Plugin: Automação da geração de classes (Source Generation).
  • WSDL4J: Geração dinâmica do WSDL.

SOAP vs REST: Por que estudar SOAP em 2025?

Embora o REST (com JSON) seja o padrão dominante para desenvolvimento web e mobile, o SOAP continua sendo a espinha dorsal de sistemas críticos (Bancos, Seguradoras, Governo) devido à sua formalidade e segurança.

Abaixo, um comparativo das principais diferenças abordadas neste estudo:

Característica SOAP (Simple Object Access Protocol) REST (Representational State Transfer)
Formato de Dados Apenas XML (Rígido e Verborrágico) JSON, XML, Texto, HTML (Flexível e Leve)
Definição de Contrato WSDL (Obrigatório). O contrato dita o código. OpenAPI/Swagger (Opcional). Documenta o código.
Modelo Mental Orientado a Operação (Chamada de Procedimento Remoto). Orientado a Recurso (Entidades manipuladas via verbos HTTP).
Tratamento de Erros Padronizado via SOAP Fault no envelope. Códigos de status HTTP (404, 500, 201).
Principal Vantagem Segurança e Atomicidade. Garante que a mensagem chegue exatamente como o contrato exige (Type Safety). Performance e Simplicidade. Fácil de implementar e consumir por navegadores e celulares.

Nota: A escolha do SOAP neste projeto foi proposital para exercitar a disciplina do desenvolvimento Contract-First, garantindo integridade de dados entre sistemas heterogêneos.

Como Executar o Projeto

Pré-requisitos

  • Java 25 (JDK) instalado.
  • Maven instalado.

1. Clonar e Gerar Fontes

Como as classes base são geradas dinamicamente, o primeiro passo é rodar o build do Maven para criar os arquivos necessários na pasta target:

mvn clean compile

Nota: As classes geradas (ex: GetPaisRequest, Pais) ficarão localizadas em target/generated-sources/jaxb. Certifique-se de que sua IDE reconheça esta pasta como "Generated Sources".

2. Rodar a Aplicação:

Após a compilação, inicie o servidor:

mvn spring-boot:run

A aplicação estará rodando em: http://localhost:8080

Como testar (Request Payload)

Você pode testar a aplicação usando Postman, Insomnia ou SoapUI.

Exemplo de body (XML):

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                  xmlns:ns="http://httpsdre.com.br/soap">
    <soapenv:Header/>
    <soapenv:Body>
        <ns:getPaisRequest>
            <ns:nome>Brazil</ns:nome>
        </ns:getPaisRequest>
    </soapenv:Body>
</soapenv:Envelope>

Resposta esperada:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header/>
    <SOAP-ENV:Body>
        <ns2:getPaisResponse xmlns:ns2="http://httpsdre.com.br/soap">
            <ns2:pais>
                <ns2:nome>Brazil</ns2:nome>
                <ns2:capital>Brasília</ns2:capital>
                <ns2:moeda>BRL</ns2:moeda>
            </ns2:pais>
        </ns2:getPaisResponse>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

About

SOAP API com Spring Boot & Contract-First Design

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages