Construir uma aplicação Java utilizando:
- Spring Core para injeção de dependência
- Spring Jdbc com JDBCTemplate para acesso a dados
- Criar o server-side de um CRUD utilizando RowMapper para a obtenção dos dados
- Expor o CRUD como webservice SOAP
- Consumir o serviço consultaCEP do WSDL https://apps.correios.com.br/SigepMasterJPA/AtendeClienteService/AtendeCliente?wsdl utilizando CXF para geração do client
- Expor o serviço do passo 3 como REST ( utilizando JAX-RS)
Nessa solução foi utilizada as seguintes tecnologias:
- Java 1.8
- H2 Database
- Maven Warp 3.5
- SpringBoot 2.1.0
- SoapUI para os testes de integração
Antes da instalação se pressupõe que o java 1.8 e o git já estão instalados, se não estiverem devem ser instalados antes de continuar
Para baixar os arquivos do aplicativo deve-se usar o comando:
git clone https://github.com/bozoh/desafio-ebix.git
Depois entrar na pasta do aplicativo:
cd desafio-ebix
Os demais comandos a seguir devem ser feito a partir da pasta do aplicativo
Para executar a aplicação recomenda-se usar uma das duas formas:
Para executar a aplicação diretamente pelo maven use o comando:
No linux:
./mvnw clean spring-boot:run
No windows:
mvnw.cmd clean spring-boot:run
Para gerar um executável java use comando:
No linux:
./mvnw clean package
No windows:
mvnw.cmd clean package
Após o executável ser gerado, use o comando para inicializar o aplicativo:
java -jar target/desafio-0.0.1-SNAPSHOT.jar
O aplicativo se inicializará no endereço:
http://127.0.0.1:8080/
A api SOAP está disponível em http://127.0.0.1:8080/soapws
e o descritor do serviço em http://127.0.0.1:8080/soapws/usuarios.wsdl
.
Para uma maior detalhamento da API SOAP veja o arquivo api-soap.html
A API REST está disponível em http://127.0.0.1:8080/api
, e para buscar um endereço pelo cep deve-se enviar um GET
para o caminho /api/cep/<CEP>
, onde <CEP>
é o cep do endereço desejado.
E vai retornar um endereço no formato:
{
"logradouro":"<NOME DA RUA>",
"complemento2":"<COMPLEMENTO DO ENDEREÇO>",
"bairro":"<BAIRRO>",
"cidade":"<CIDADE>",
"uf":"<UF>",
"cep":"<CEP>"
}
ou um erro se não achar o endereço, no formato
{
"msg":"<MENSAGEM DE ERRO>",
"status":"<STATUS DO ERRO>
}