Blog da iProcess - Compartilhando conhecimento em BPM e RPA

Construção de serviços simulados utilizando Java

No desenvolvimento de sistemas com base na arquitetura orientada a serviços (SOA), frequentemente nos deparamos com a necessidade de utilizar serviços já existentes na infraestrutura do cliente, mas que não estão disponíveis no nosso ambiente de desenvolvimento local. Ainda, na maioria das vezes não temos a possibilidade de instalar localmente tais serviços devido a dependências destes com outros serviços, bibliotecas ou outros componentes que somente estão disponibilizados no ambiente integrado do cliente.

Nestes casos, podemos fazer uso de um recurso muito útil: a construção de versões simuladas de serviços, ou mocks como são chamados em inglês. A ideia é podermos disponibilizar no ambiente local um serviço que exponha o mesmo contrato WSDL que o serviço original, ou seja, as mesmas operações e tipos de dados.

Uma das alternativas para a criação de um serviço simulado é implementá-lo observando as operações e os tipos de dados expostos pelo serviço original e recriando-os completamente, por exemplo, utilizando Java e JAX-WS. Porém, para os casos em que temos acesso ao contrato WSDL do serviço original, é mais simples e seguro construirmos o mock diretamente a partir dele.

Vamos então demonstrar como construir um serviço simulado em Java, a partir do contrato de um serviço original, em um passo-a-passo utilizando o Oracle JDeveloper.

Primeiramente, para exemplificar, vamos supor que estamos desenvolvendo um sistema que deverá invocar o serviço de cálculo de prazo e custo dos Correios, mas o serviço real somente deverá ser utilizado quando a solução for integrada no ambiente do cliente. Logo, em tempo de desenvolvimento, devemos construir um mock do mesmo.

1 – Criação da aplicação

Comece criando uma nova aplicação genérica no JDeveloper:2 – Criação de novo projeto

Crie um novo projeto genérico a partir do passo seguinte do wizard de nova aplicação ou a partir da opção de Novo Projeto, se você estiver criando um segundo mock dentro de uma aplicação já existente no JDeveloper.

Não é preciso selecionar nenhuma tecnologia para o projeto, podendo-se encerrar o utilitário de criação do novo projeto clicando no botão Finish.

3 – Criação do webservice

Clique com o botão direito no projeto criado e escolha a opção New. Na janela de opções, selecione no lado esquerdo a categoria “Web Services” e no lado direito “Java Web Service from wsdl”.

No wizard de criação do serviço, escolha como plataforma “Java EE 1.5, with support for JAX-WS RI”:

Clique em Next. Neste momento é preciso abrir o arquivo WSDL do serviço original. No nosso exemplo vamos especificar a URL para o WSDL do serviço original dos correios, que está disponível em https://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx?WSDL (marque para criar cópia local do contrato).

Clique em Next novamente, especifique o nome do pacote Java e finalize o wizard. Pronto! Está criado o novo serviço mock, expondo o mesmo contrato WSDL que o serviço original. Deverão ter sido criadas classes Java para todos os tipos de dados envolvidos nas mensagens de entrada e saída das operações, bem como a implementação do serviço com as devidas anotações.

Como passo final, edite o novo arquivo XXXImpl.java (onde XXX corresponde ao nome do seu serviço simulado) para codificar o retorno de dados de teste nas operações expostas pelo serviço, como no exemplo a seguir:

Agora basta fazer o build do arquivo .war do serviço e disponibilizá-lo em seu servidor de aplicações local. Veja os valores que setamos sendo retornados em um teste de invocação do serviço simulado, depois de disponibilizado em um servidor Weblogic 11g:

Uma resposta

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

MAIS VISTOS

Torne-se um líder em iniciativas em RPA, a próxima turma inicia em agosto!... (continuar lendo)
Essa é a sua chance de participar do nosso curso de BPMN! Estamos ansiosos para... (continuar lendo)
Qual a diferença entre automação, robotização e inteligência artificial? Em algumas situações esses termos são... (continuar lendo)

Inscreva-se na nossa Newsletter

seers cmp badge