Conectando Jenkins com GitHub

Olá Pessoal,

No post de hoje vamos ver como buildar nossos projetos no jenkis e mantê-lo conectado a um repositório; no nosso caso escolhemos o github por usar o Git. Claro que poderia ser um outro repositório, até mesmo local, mas o Github é o mais popular repositório Git.

Lets go…

Starting

Antes de mais nada, vou considerar que você já conhece um pouco de Git e GitHub, pois não entrarei em detalhes de como cada um funciona, para isso  você precisa ter:

– Um repositório criado no GiHub;

– Git na sua máquina local

Os nossos steps

Basicamente criaremos um projeto e em seguida faremos um push para o GitHub. Tendo o projeto no nosso repositório remoto, vamos configurar o Jenkins para conversar com o GitHub  e poder realizar  “pull” quando o build for inicializado.

Step 1

1      Abra o seu eclipse e crie um Java Project chamado MyBookStore.

2      Feito, envie esse projeto para o GitHub.

Uma vez que o projeto já está no repositório, vamos ao Jenkins fazer as devidas configurações (estou considerando que você já tem o jenkins rodando na sua máquina, onforme o primeiro post da série).

Acesse o Jenkins e vá em Manage Jenkins  e escolha Manage Plugins. Alguns plugins o Jenkins já traz e outros precisamos instalar. Na aba de Installed verifique se o plugin do GitHub Plugin está instalado:

Se não tiver, vá na aba de available e procure pelo plugin. Instale também um plugin chamado Git Plugin. Esse é para que o Jenkins possa rodar os comandos do Git.

Note: use a opção install without restart.

Configurando o Jenkins

Agora vamos configurar o jenkins, portanto em manage jenkins escolha configure system e observe que você deve ter uma Git na lista:

Esses caras servem para configuramos e dizermos ao jenkins como ele deve ser comportar se o projeto que fomos buildar usar  um deles. Não é requerido preencher todos, exceto se você tem N projetos e cada projeto tem que usar uma estrutura diferente, por um usar ant e outro maven, daí vc precisa configurar tanto maven quando o ant nessa parte do Jenkins.

Primeiro vamos configurar o JDK que é requerido para qualquer projeto Java onde precisamos compilar as classes .java.

Coloque o local onde instalou o Java, conforme a imagem a seguir:

Assim dizemos ao jenkins onde está o nosso Java e qual ele deve usar para compilar as nossas classes durante o build

Agora vamos para o Git

Nada de diferente, apenas informamos onde está o Git na nossa máquina.

Deixamos as próximas opções da maneira default. Agora vamos configurar o Git Plugin que contém as informações do usuário que fez o commit.

Observe que estamos configurando o Git e não GitHub.

Essa é uma das partes mais importantes e demorei horas para descobrir, aqui vamos colocar key-gen registrado lá no github:

Em Github web Hook deixei a opção Manually manage hook URLs selecionada. Salve as modificações.

Pronto, jenkins configurado.

Criando Jobs no Jenkins

Agora vamos criar um job no Jenkins para o nosso projeto.

E darei o mesmo nome do projeto:

Ao criar o job, vamos para as configurações que nos interessa:

Precisamos informar onde está o nosso repositório, pode estar localmente ou remoto. No nosso caso está remoto no GitHub, que é o:

https://github.com/camilolopes/myworkspace.git

E deixamos assim. É esse cara que o jenkins fará o clone, por isso que ele precisa da URL.

Feito isso podemos salvar e buildar nosso projeto:

Clique na barra de loading à esquerda para ver o log:

Observe que o jenkins conectou ao github e está trazendo o que temos no repositório, nesse caso MyBookStore.

Resultado

A seguir o resultado:

A nuvem, eu costumo dizer que o projeto passou por algumas turbulências, o solzão está tudo tranquilo, todo time pode ir para praia tranquilo que ninguém vai ligar para incomodar.

Pronto temos, nosso projeto  sendo construído pelo Jenkins.

Falha no Jenkins

Vamos simular uma falha e ver o que acontece, e para isso precisamos alterar a classe para que o código não compile:

Daí podemos mandar essa alteração para o GitHub. Uma vez com o código alterado no github:

Precisamos configurar o maven, então vá em manage jenkins e na parte do maven deixe assim:

Esquecemos de configurar no Job como será o build, então vá no job que criamos e depois em configure e deixe assim o build:

Clique em advanced do build

No eclipse Clique com o botão direito no projeto e adicione Maven >> e habilite o maven.

Agora commit e manda as alterações para o github.

Agora vamos mandar o Jenkins buildar nosso projeto e ver o que acontece:

Vamos tentar arrumar isso corrigindo o código, altere o código e mande para o GitHub.

E agora vamos buildar pra ver. O que acontece:

Pronto! Assim concluímos essa parte. Pouco cansativo na primeira vez devido a configurações, mas depois fica mais fácil. No próximo post veremos como automatizar, ou seja, uma mudança no nosso repositório remoto e automaticamente o build começa. Ou seja, Fez push para o github, o build  começa a validar.

Abraços, see  ya!!

Rodando Jetty a partir do Maven

Olá Pessoal,

No post de hoje vamos ver como rodar o Jetty a partir do maven. Confesso que é a forma mais fácil e rápida. Já tentei de plugins no Eclipse etc, mas tem alguns plugins que dão muito trabalho, fora os bugs existentes.

Jetty no Maven

Para rodar o Jetty no maven é mais simples que tirar doce de criança. Caso não tenha nenhum projeto web com maven criado, siga os passos a seguir, caso contrário pule essa parte e veja só configuração do seu pom.xml e execute o maven.

Criando Projeto Maven Eclipse

File >> New >> Project

Maven  >> Maven Project

Clique em next e next

E na tela de Archetype escolha o projeto web, conforme a imagem a seguir:

A seguir o meu projeto:

Abra o arquivo pom.xml e vá na aba pom.xml.Dentro da tag build vamos adicionar o plugin para o Jetty e o maven vai se encarregar de fazer o restante:

<plugins>

<!– setup JETTY –>

<plugin>

<groupId>org.mortbay.jetty</groupId>

<artifactId>mavenjettyplugin</artifactId>

<version>6.1.26</version>

<configuration>

<!– uncomment this block if you want to change the default port jetty –>

<!– <connectors> <connector implementation=”org.mortbay.jetty.nio.SelectChannelConnector”>

<port>9090</port> </connector>

</connectors> –>

<!– force friendly name instead of artifact name + version –>              <contextPath>${project.build.finalName}</contextPath>

<!– You can save changes in a file or class and refresh your browser

to view the changes. –>

<scanIntervalSeconds>3</scanIntervalSeconds>

</configuration>

</plugin>

</plugins>

</build>

Feito isso, salve o arquivo e vamos rodar o jetty e ver  o resultado. Você pode rodar pelo Eclipse ou por fora via command line (eu gosto de rodar por fora).

Rodando pelo Eclipse

Clique com o botão direito no projeto >> Run As >> RunConfigurations

Escolha maven build e deixe conforme a tela a seguir:

Aqui não tem nada demais, apenas roda o comando mvn jetty:run e em base directory informamos o projeto que queremos.

Feito isso, o console do Eclipse deve estar assim:

Então podemos ver que o Jetty subiu normalmente.

Rodando via command line Windows

É bem simples. Abra o prompt do  Windows e vá até o diretório onde está o seu projeto. Ao chegar lá, execute o seguinte comando : mvn jetty:run  e veja que o Jetty será started. Na primeira vez que você fizer isso, o maven vai baixar os .jars  que são requeridos e deve demorar um pouco.

Testando aplicação

Para testar a aplicação é bem simples, com o Jetty rodando apenas digite no browser http://localhost:8080/   vai dar erro 404, não se preocupe, clique no link que está nessa página e certamente você vai ver a página index da sua aplicação, conforme a imagem a seguir:

Vou ficando por aqui!! Espero que tenham gostado do post.

See ya!! Abraços

Java WebServices com BD

Olá Pessoal,

Dando continuidade aos post sobre webservice neste ultimo desta série, vamos ver como ter uma aplicação que faz pesquisa no banco de dados e vamos disponibilizar essa pesquisa via webservice. Um cliente nosso, vai consumir essa webservice e conseguir pesquisar em nosso banco, então deixar o “hello world” de lado. Ah, vamos usar o Hibernate framework para fazer a consultar no banco.Outro detalhe, não seguir as melhores praticas para criar  DAO genérica, fiz tudo em uma classe, o objetivo aqui não é DAO, Hibernate etc. E sim disponibilizar um web service para que possa ser consumido pelos clientes, que será uma consulta de clientes pelo ID.

Lets go…

Requisitos

  • Java 6 ou mais recente
  • MySql 5
  • Hibernate

Contexto

Se você não entendeu bem o contexto, vou dar um pouco mais de detalhe, antes de começarmos a desenvolver. Vamos ter dois projetos, um que é a nossa aplicação que pesquisa clientes por ID e o outro o projeto do fornecedor que vai consumir a webservice. O nosso banco já está populado com alguns clientes. No nosso caso serão poucos dados apenas o ID e o CPF.

Desenvolvendo

Nosso código será um pouco grande, pois vou incluir parcialmente o código do Hibernate,  também vou considerar que já conhece o framework, sendo assim, não irei explicar código que não seja relacionado webservice. Se tem dúvida com o Hibernate, pode visitar nossa categoria aqui no blog e ver o que temos por lá.  Certifique-se também que você tem uma tabela no banco populada:

A minha tabela chamei de Cliente.

Crie o projeto Java Project aqui chamei de WSDAO.

Não esqueça de adicionar os .jars do Hibernate  & MySQL ao seu projeto.

Vamos começar pelo bean, então crie uma classe cliente conforme abaixo, os getters/setters foram omitidos.

@Table

@Entity

public class Cliente {

      @Id

      @Column(name=”ID_CLIENTE”)

      @GeneratedValue

      private int id;

      @Column

      private long cpf;

//getters/setters omitidos

Agora vamos criar o nosso DAO, para isso crie uma classe conforme abaixo:

public class ClienteDAO {

            private final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();

            private final SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();

      public Session getSession(){

            Session session = threadLocal.get();

            if (session == null) {

                  session = sessionFactory.openSession();

                  threadLocal.set(session);

            }

            return session;

      }

      public Cliente getCliente(int id) {

            Session session = getSession();

            Cliente cliente = new Cliente();

            try{

                  session.beginTransaction();

            String hql = “from Cliente where id=:idvalue “;

            Query query = session.createQuery(hql );

                  query.setInteger(“idvalue”, id);

                  cliente = (Cliente) query.uniqueResult();

            }catch (HibernateException e) {

                  e.printStackTrace();

            }finally{

                  session.close();

            }

            return cliente;

      }

Criando agora o nosso SEI:

@WebService

public interface Service {

      @WebMethod

      Cliente getCliente(int id);

}

Criando SIB

@WebService(endpointInterface=”br.com.camilolopes.ws.sei.Service”)

public class ServiceImpl implements Service {

      private ClienteDAO clienteDAO = new ClienteDAO();

      @Override

      public Cliente getCliente(int id) {

            return clienteDAO.getCliente(id);

      }

}

Publicando o serviço:

public class ClientePublish {

      public static void main(String[] args) {

            Endpoint.publish(“http://localhost:9876/wscliente”, new ServiceImpl());

      }

}

Testando com SOAPUI

            Agora precisamos testar, então suba o serviço rodando a classe ClientePublish(Run → as    → Java Application ) e em seguida abra o SOAPUI, crie um projeto e passe a url do  com o wsdl (no meu caso: http://localhost:9876/wscliente?wsdl)

            Ao adicionar url certamente verá o método getCliente a esquerda na tela da esquerda da ferramenta, click no sinal + e dê dois cliques no request1. Sua tela deve ser conforme a image a seguir:

Na tag <arg0>?</arg0> vamos passar o ID do cliente que queremos buscar, então informe os Ids válidos conforme vimos mais cedo na tabela do DB. Vou informar o ID 1 e ele deve retornar o resultado na aba que está a esquerda. Troque a  ? por 1 e execute clicando no botão submit request (uma seta verde que está na parte superior da tela)

note: lembre-se que seu serviço deve tá publicado, ou seja, a classe que faz o publish deve tá rodando. No caso do exemplo do post chamei ela de ClientePublish.

O resultado é conforme a imagem a seguir:

Observe que temos o resultado no formato XML a direita. E  oque acontece se o ID  não existir? Simplesmente não traz nada. :).

Criando o Cliente para Consumir

Agora vamos criar um cliente que vai conseguir esse nosso webservice  que faz uma pesquisa no banco de dados pelo ID do cliente. Para ficar claro e separar o projeto webservice do cliente, vamos criar um projeto separado, lembrando que uma vez o serviço publicado este projeto cliente que vai consumir o webservice, não necessariamente precisa ser desenvolvido em Java, poderia ser em .NET, PHP etc.

Step 1

Crie um novo projeto Java, o do post chamei de WSDAOConsumer somente para facilitar o entendimento no post.

note: não crie os packages conforme a imagem acima, apenas o projeto por enquanto, beleza?

Step 2

            via prompt de comando acesse o src do projeto

Step 3

            import o wsdl para o projeto:

wsimport -keep -p br.ws.cliente http://localhost:9876/wscliente?wsdl

note: Se você não quiser rodar o comando wsimport verifique se a sua IDE dá suporte  na importação do wsdl de maneira visual e execute, o resultado será o mesmo. Depender da versão do Eclipse que estiver usando você terá o suporte.

Step 4

            crie em um package separado a classe que vai usar as operações do service

public class Consumer {

      public static void main(String[] args) {

            Service service = new ServiceImplService().getServiceImplPort();

                  Cliente cliente = service.getCliente(1);

                  System.out.println(cliente.getId());

                  System.out.println(cliente.getCpf());

      }

}

O resultado é mais simples possível, apenas imprime o resultado no console:

A questão é: “imprime no console, porque o meu projeto é assim, ele usa o prompt para imprimir as coisas que ele consome do web service”.Analise e pense dessa forma com o exemplo acima.Porém, Se fosse um projeto JEE eu poderia exibir isso em uma view JSF em uma tabela ou também não poderia exibir em lugar nenhum, e pegar o resultado do WS e salvar em tabela no meu banco de dados, enfim são N possibilidades que podemos fazer com os dados que estamos consumindo, isso vai está atrelado as regras de negócio do seu projeto. Resolvi trazer essa abordagem, para quem está chegando não ache que para consumir um web service deve rodar em cima de Java Application apenas.

Vou ficando por aqui, espero que vocês tenham gostado dessa  série de posts sobre web service.

Abraços, see ya!!

Criando Cliente WebService SOAPUI

Olá Pessoal,

Mais um post dando continuidade ao post anterior de WebServices, vamos ver hoje como criar um cliente a partir de um serviço publicado. Para isso, vamos usar uma ferramenta SOAPUI que nos ajuda durante o desenvolvimento para testarmos nosso serviço. Será um post bem curto, mas complementar do vimos no anterior.

Lets go…

Usando SOAPUI para testar o serviço

            Com SOAPUI Tools é possivel testar o resultado do seu serviço facilmente sem precisar criar um cliente. A ferramenta tem várias outras funcionalidades, como testar carga do seu serviço, rodar test cases etc.  Vamos testar o nosso:

Faça o download: http://www.soapui.org/

  1. crie um projeto novo projeto
  2. Dê o nome ao projeto e informe a wsdl do webservice (no caso do exemplo do post anterior será: http://localhost:9876/welcome?wsdl)


  1. a esquerda do projeto teremos a interface e os métodos do serviço que o cliente pode consumir, clique no sinal +
  2. Agora dê dois cliques no request welcomeEn
  3. Ao abrir a tela, temos a esquerda temos o nosso webservice e uma “?” que onde diz que é preciso passar um valor para parâmetro. A direita será o resultado que teremos e que o cliente também terá ao consumir o serviço.

 

  1. Substitua a interrogação da aba que está na esquerda pelo seu nome
  2. Clique no botão submit request (uma seta verde)
  3. E veja o resultado a direita

Isso facilita durante o desenvolvimento, uma vez que não precisamos criar um cliente(de novo), por exemplo, para ver o resultado, já conseguimos testar de imediato com a ferramenta SOAPUI.

Vamos criar o cliente?

Criando o Cliente para consumir Webservice

            Para consumir um webservice, basta usar o seguinte comando:

wsimport -keep -p nomedodiretorio url do wsdl

Abra o prompt de comando e navegue até o src do projeto

wsimport -keep -p br.ws.cliente http://localhost:9876/welcome?wsdl

note: claro que há IDE que faz isso por você, basta informar a url do wsdl, mas para o post não quis prender a criação do cliente à uma ferramenta especifica.

Normalmente criamos um package no projeo que vai ter as classes referente ao serviço a ser consumido, vamos dizer que esse fosse um serviço da amazon, e para manter a organização eu criaria um package assim: br.com.camilolopes.wsimport.amazon uma vez que podemos ter outros websservices que serão consumidos. 

Para testar o webservice como cliente, criamos uma classe conforme a seguir:

note: antes de rodar se certifique que o serviço está publicado, ou seja, que a classe que faz o publish está rodando, uma vez que está ok, roda a classe abaixo. Isso mesmo, é em paralelo.

public class ClienteConsumerWs {

      public static void main(String[] args) {

      WelcomeImpl welcomeImpl = new WelcomeImplService().getWelcomeImplPort();

            String welcomeEn = welcomeImpl.welcomeEn(“Camilo Lopes”);

            System.out.println(welcomeEn);

      }

}

O resultado é imprimir no prompt Hello Camilo Lopes

A sacada que você também precisa ter é que pouco importa se seu projeto é um Java Project ou JEE Project. Enfim, o serviço está disponivel para ser consumido, o como você vai consumir não é preocupação do fornecedor, se você terá uma aplicação “parruda” JEE ou em JSE, isso é com você. No exemplo acima fizemos uma aplicação Java Application que imprime no console. Mas, não quero que você saia do post, achando que é isso que deve fazer no seu projeto. 🙂

Vou ficando por aqui e espero que tenham gostado do post, na semana que vem veremos um serviço completo porém com banco de dados.

See ya!!!!

Criando WebServices Java 6

Olá pessoa­­­l,

Preparei este post para quem quer começar a brincar com WebService. Fiz três posts: um “hello world”, outro onde veremos como criar um cliente para consumir o serviço e por último criar um WebService envolvendo banco de dados que será consumido. Usaremos alguns recursos do Java 6 para criar e publicar um WebService.  Eu espero que vocês gostem da série. O objetivo maior é poder compartilhar o conhecimento com quem está chegando, eu tive dificuldades no inicio de juntar todo quebra-cabeça e ver uma simples mensagem. Nem sempre é fácil quando estamos dando os primeiros passos e o objetivo do post é ajudar quem está nesse contexto. Enfim, teremos uma pequena jornada nas próximas semanas.

Lets GO…

WebService

Não vou falar sobre o que é um WebService, pois há vários artigos, posts em blog, Wikipedia explicando exatamente o proposto da tecnologia, o post aqui tem foco de ser prático, ou seja, algo mão na massa, e vou considerar que você já leu sobre o assunto, porém agora quer ver a coisa funcionado. Eu não sou muito bom de teoria, e vou darei um exemplo bem alto nível somente para tentar exemplificar o que é um WebService, caso você tenha dúvida do conceito (eu particularmente quando li o sobre o assunto pela primeira fiquei meio perdido).  Imagine a Amazon (é o servidor) e você é um cliente da Amazon como fornecedor. Você tem uma livraria em parceria com Amazon, porém a aplicação que controla os livros que você tem na sua livraria é diferente do sistema de controle da Amazon, porém você gostaria de realizar uma pesquisa no “banco” da Amazon e poder efetuar compras de livros como fornecedor quando não tivesse o exemplar na livraria fisicamente, como fazer isso a partir da sua aplicação? Através de um WebService. A Amazon disponibiliza esse serviço de consultar e comprar livros como fornecedor e vc como consumidor vai pegar esse serviço e incorporar ao seu sistema, sem precisar adaptar seu sistema (mudar linguagem, banco etc) para nada especifico da Amazon. Supondo que seu sistema é em .NET e o da Amazon em Java, isso pouco importa via WebServices.

Por que Java 6?

No Java 6 foi adicionado anotações que permitem, definimos se a nossa classe é um WebService e quais métodos queremos publicar. Além de outras anotações relacionadas. E isso nos ajuda a criar e publicar um WebService sem precisar de um container (TomCat,Jetty etc). É isso mesmo, vc não vai precisar instalar um desses servidores para criar e testar seus webservices durante desenvolvimento. Evidente que essa forma não vai substitui os benefícios que temos ao usar um servidor de aplicação.  Mas, é uma mão durante o desenvolvimento.

Nosso exemplo

No nosso exemplo vamos fazer um  Hello World + <nomepassado> ou seja, “Hello World Camilo”. É algo muito simples, mas para quem está iniciando é uma felicidade em ver as coisas funcionando mesma que seja com uma mensagem tão tradicional como a nossa.

O que você precisa saber antes de começar:

É importante que você conheça os termos abaixo:

SEI Service Endpoint Interface: temos a interface com as operações (métodos) do webservice

SIB Service Implementation Bean: representa a classe que implementa a interface. Este sempre tem um link através da anotação @WebService para o SEI, ou seja, o endPoint.

WSDL: é um contrato entre o meu serviço com os mais consumidores

SOAP: é um protocolo usado na criação WS

Comando wsimport: usado pelo consumidor, ou seja, pelo cliente que vai usar o webservice. Esse comando tem a responsabilidade de criar o cliente webservice para o webservice (estranho mais é isso que acontece na pratica)

Comando apt: gera o javaws(pacote/package) para o publish do serviço.

apt:<caminho da classe WebService>

@WebService = é sinal que temos um SEI

@WebMethod = é sinal que cada método é uma operação do service

Praticando

Neste primeiro exemplo veremos como criar um WebServices e publicá-lo para que terceiros possa consumir o serviço que disponibilizamos:

  1. Crie um projeto no Eclipse JavaApplication
  2. criamos os três packages: 1 para colocar a classe que é responsável por publicar o webservice, outra para ter a interface (SEI) e mais um para a classe que implementada a interface (SIB).

Interface SEI

Vamos criar a nossa interface que terá dois métodos a serem implementados pela classe que estará no package SIB. Onde o objetivo é dar boas vindas ao usuário em dois idiomas: inglês e português. O código deve ficar assim:

@WebService

public interface Welcome {

@WebMethod

String welcomePt(String nome);

@WebMethod

String welcomeEn(String nome);

}

SIB – Classe que implementa a interface

Vamos criar a classe que tem a responsabilidade dá “colocar” carne no esqueleto. Vale lembrar que poderíamos fazer isso tudo em uma classe sem o uso da interface etc. Mas, por boas praticas de desenvolvimento fizemos assim.

import javax.jws.WebService;

import br.com.camilolopes.ws.sei.Welcome;

@WebService(endpointInterface=”br.com.camilolopes.ws.sei.Welcome”)

public class WelcomeImpl implements Welcome {

@Override

public String welcomePt(String nome) {

// TODO Auto-generated method stub

return “Olá “+ nome;

}

@Override

public String welcomeEn(String nome) {

// TODO Auto-generated method stub

return “Hello ” +nome;

}}

Anotação @WebService na classe é necessário fazer, pois precisamos indicar o endPointInterface que nesse caso é a nossa classe que colocamos no package xx.sib

Publicando o Serviço

Para publicarmos é muito simples. Criaremos uma classe responsável, como a seguir:

public class WelcomePublish {

public static void main(String[] args) {

Endpoint.publish(“http://localhost:9876/welcome”, new WelcomeImpl());

}}

No código acima estamos informando onde será publicado o serviço: endereço (localhost) e a porta (9876). Depois informamos à classe que tem a implementação do serviço. É o mesmo que dizer: publique neste endereço, o que temos na classe WelcomeImpl.Na pratica é isso que acontece.

Note: cuidado com a porta se estiver ocupada veja qual o processo está usando e finalize. Normalmente a porta acima está disponível. Depois que terminar de publicar seu serviço e quiser subir outro na mesma porta, vá ao gerenciador de tarefa e mate o process javaws, ele será o que o seu webservice estava usando ou pare sua aplicação via Eclipse.

Testando o Serviço

Para testarmos se o nosso serviço está funcionando, vamos publicá-lo executando a classe WelcomePublish. Ao rodar a classe devemos ter a imagem a seguir no console:

Verificando serviço publicado

Para verificar o serviço, vamos acessar usando o browser e obter o wsdl. Certifique que a classe WelcomePublish está rodando e acesse: http://localhost:9876/welcome?wsdl . Já temos o serviço publicado, e agora qualquer outra pessoa pode criar o cliente e consumir. Acesse o link e veja o resultado :).

Acho que por hoje é só isso, no próximo vamos conhecer a SOAPUI e como criar um cliente para consumir esse serviço.Não se preocupe por agora como será consumido e sim entender a base de WebService e praticar um pouco mais.

Abraços,  espero que tenham gostado. See ya!!