Introdução aos Web services JAX-WS

Java API para Web services XML (JAX-WS), JSR 224 é uma parte importante das plataforma Java EE. Uma sequência da release da API Java para RPC 1.1 (JAX-RPC) com base em XML, o JAX-WS simplifica a tarefa de desenvolvimento de Web services utilizando a tecnologia Java. Ela aborda alguns dos problemas em JAX-RPC 1.1, fornecendo suporte a vários protocolos, como SOAP 1.1, SOAP 1.2, XML, e fornecendo um recurso para dar suporte a protocolos adicionais junto com HTTP. O JAX-WS usa JAXB 2.0 para vinculação de dados e dá suporte a personalizações para controlar interfaces de ponto final de serviço geradas. Com suporte a anotações, o JAX-WS simplifica o desenvolvimento do Web service e reduz o tamanho de arquivos JAR do run-time.

Este documento demonstra os conceitos básicos sobre o uso do IDE para desenvolver um Web service JAX-WS. Após criar o Web service, você escreve três clientes de Web service diferentes que usam Web service em uma rede, denominado "consumo" de um Web service. Os três clientes são uma classe Java em uma aplicação Java SE, um servlet e uma página JSP em uma aplicação Web. Um tutorial mais avançado que se concentra em clientes é Desenvolvendo Clientes de Web Service JAX-WS.

Conteúdo

O conteúdo desta página se aplica ao NetBeans IDE 7.2, 7.3 e 7.4

Para seguir este tutorial, são necessários os recursos e o software a seguir.

Software ou Recurso Versão Necessária
NetBeans IDE Pacote de download do Java EE
JDK (Java Development Kit) JDK 6 ou JDK 7
Servidor de aplicações ou Web compatível com Java EE GlassFish Server Open Source Edition
Oracle WebLogic Server

Observação: o GlassFish Server pode ser instalado com a distribuição de Java EE do NetBeans IDE. Como alternativa, você pode visitar a página de downloads do GlassFish Server ou a página de downloads do Apache Tomcat.

Importante: os projetos Java EE requerem GlassFish Server ou Oracle WebLogic Server 12c.

O servidor web de Tomcat incorporado não é um servidor web totalmente compatível com Java EE. No entanto, o servidor web Tomcat 7.x pode ser configurado para suportar alguma funcionalidade de Java EE. Consulte o Projeto Apache para EE para obter informações sobre como adicionar suporte ao Java EE para Tomcat.

Criando um Web Service

O objetivo deste exercício é criar um projeto apropriado para o contêiner de implantação que você decidir utilizar. Uma vez criado o projeto, você irá criar nele um Web service.

Escolhendo um Contêiner

Você pode implantar o Web service em um contêiner Web ou em um contêiner EJB. Isso depende das suas escolhas de implementação. Se estiver criando uma aplicação Java EE, use um contêiner Web, pois você pode colocar EJBs diretamente em uma aplicação Web. Por exemplo, se você planeja implantar no Servidor Web Tomcat, que tem somente um contêiner Web, crie uma aplicação Web, não um módulo EJB.

  1. Selecione Arquivo > Novo Projeto (Ctrl-Shift-N no Linux e no Windows, ⌘-Shift-N no MacOS). Selecione Aplicação Web na categoria Java Web ou Módulo EJB na categoria Java EE.

    Você pode criar um Web service JAX-WS em um projeto Maven. Selecione Arquivo > Novo Projeto (Ctrl-Shift-N no Linux e no Windows, ⌘-Shift-N no MacOS) e o módulo Aplicação Web Maven ou Maven EJB na categoria Maven. Se você nunca tiver usado Maven com NetBeans antes, consulte Melhores Práticas para o Maven.

  2. Nomeie o projeto CalculatorWSApplication. Selecione uma localização para o projeto. Clique em Próximo.
  3. Selecione o servidor e a versão do Java EE e clique em Finalizar.

    Para usar o Oracle WebLogic server, registre o servidor no IDE. Além disso, se você estiver usando o WebLogic server, observe a screencast em Implantando uma Aplicação Web para Oracle WebLogic.

Criando um Web Service com base em uma Classe Java

  1. Clique com o botão direito do mouse no nó CalculatorWSApplication e selecione Novo > Web Service.
  2. Chame o Web service de CalculatorWS e digite org.me.calculator no Pacote. Deixe Criar Web Service do Início selecionado.
  3. Se você estiver criando um projeto Java EE em GlassFish ou WebLogic, selecione Implementar Web Service como um Bean de Sessão Sem Estado.
    Assistente Novo Web Service para EE, com opções do bean
  4. Clique em Finalizar. A janela Projetos exibirá a estrutura do novo Web service e o código-fonte será mostrado na área do editor.

Adicionando uma Operação ao Web service

O objetivo deste exercício é adicionar ao Web service uma operação que adiciona dois números recebidos de um cliente. O NetBeans IDE oferece uma caixa de diálogo para adicionar uma operação a um Web service. Você pode abrir essa caixa de diálogo no visual designer para Web service ou no menu de contexto do Web service.

Advertência: o visual designer não está disponível em projetos Maven.

Para adicionar uma operação ao Web service:

  1. Ou:
    • Altere a view do Design no editor.
      View do Design do editor do Web service

    Ou:

    • Localize o nó do Web service na janela Projetos. Clique com o botão direito do mouse no nó. Aparecerá um menu de contexto.
      Menu de contexto do nó do Web service com o item Adicionar Operação realçado
  2. Clique em Adicionar Operação no designer visual ou no menu de contexto. A caixa de diálogo Adicionar Operação será aberta.
  3. Na parte superior da caixa de diálogo Adicionar Operação, digite add em Nome e digite int na lista drop-down Tipo de Retorno.
  4. Na parte inferior da caixa de diálogo Adicionar Operação, clique em Adicionar e crie um parâmetro de tipo int chamado i.
  5. Clique novamente em Adicionar e crie um parâmetro de tipo int chamado de j.

    Agora você deverá ver o seguinte:


    Caixa de diálogo Adicionar Operação
  6. Clique em OK na parte inferior da caixa de diálogo Adicionar Operação. Você retornará ao editor.
  7. Remova a operação hello default deletando o método hello() no código-fonte ou selecionando a operação hello no visual designer e clicando em Remover Operação.

    O visual designer agora exibe o seguinte:


    Visual designer do Web service que mostra operação adicionada
  8. Clique em Código-Fonte e exiba o código que você gerou nas etapas anteriores. Será diferente se você tiver criado o serviço como um bean sem estado Java EE6 ou não. Você pode perceber as diferenças das telas abaixo? (Um serviço Java EE 6 ou Java EE 7 que não é implementado como bean sem estado parece um serviço Java EE 5.)
    Resultado: EE5 Resultado: bean sem estado EE 6

    Observação. No NetBeans IDE 7.3 e 7.4 você verá que na anotação @WebService gerada, o nome do serviço é especificado explicitamente:
    @WebService(serviceName = "CalculatorWS").

  9. No editor, estenda a operação de esqueleto add para o seguinte (alterações em negrito):
        @WebMethod
        public int add(@WebParam(name = "i") int i, @WebParam(name = "j") int j) {
            int k = i + j;
            return k;
          }

Como você pode ver no código acima, o Web service simplesmente recebe dois números e retorna a soma deles. Na próxima seção, você usa o IDE para testar o Web service.

Implantando e Testando o Web service

Depois de implantado um Web service em um servidor, você poderá usar o IDE para abrir o cliente de teste do servidor, caso ele tenha um cliente de teste. Os servidores GlassFish e WebLogic oferecem clientes de teste.

Se você estiver usando o servidor Web Tomcat, não haverá cliente de teste. Você só poderá executar o projeto e ver se a página de web services do Tomcat é aberta. Nesse caso, antes de executar o projeto, é preciso tornar o web service o ponto de entrada da aplicação. Para tornar o web service o ponto de entrada da aplicação, clique com o botão direito do mouse no nó do projeto CalculatorWSApplication e selecione Propriedades. Abra as propriedades de Executar e digite /CalculatorWS no campo URL Relativo. Clique em OK. Para executar o projeto, clique com o botão direito do mouse no nó do projeto novamente e selecione Executar.

Para testar a implantação bem-sucedida em um servidor GlassFish Server ou WebLogic:

  1. Clique com o botão direito do mouse no projeto e selecione Implantar. O IDE inicia o servidor de aplicações, constrói a aplicação e a implanta no servidor. Você pode acompanhar o progresso dessas operações no CalculatorWSApplication (run-deploy) e nas guias do GlassFish Server ou Tomcat na view Saída.
  2. Na guia Projetos do IDE, expanda o nó Web Services do projeto CalculatorWSApplication. Clique com o botão direito do mouse no nó CalculatorWS e selecione Testar Web Service.
    Guia Projetos que mostra a opção de menu de contexto Testar Web Service

    O IDE abrirá a página de teste em seu browser, se você tiver implantado uma aplicação Web no GlassFish Server. Para o servidor Web Tomcat e a implantação de módulos EJB, a situação é diferente:

    • Se você tiver implantado no GlassFish Server, digite dois números na página de teste, como mostrado abaixo:
      Página de teste do Web service quando o serviço foi implantado com êxito no GlassFish Server

      A soma dos dois números é exibida:


      Página Web que mostra o resultado do teste de um Web service

Amostras

Você pode abrir uma versão completa do bean sem estado Java EE do serviço Calculadora selecionando Arquivo > Novo Projeto (Ctrl-Shift-N no Linux e no Windows, ⌘-Shift-N no MacOS) e navegar até Amostras > Web Services Java > Calculadora (EE6).

Um Serviço de Calculadora Maven e um Cliente de Calculadora Maven estão disponíveis em Amostras > Maven.

Consumindo o Web Service

Agora que você implantou o Web service, precisará criar um cliente para utilizar o método add do Web service. Aqui, você cria três clientes — uma classe Java em uma aplicação Java SE, um servlet e uma página JSP em uma aplicação Web.

Observação: um tutorial mais avançado que se concentra nos clientes é Desenvolvendo Clientes de Web Service JAX-WS.

Cliente 1: Classe Java na Aplicação Java SE

Nesta seção, você cria uma aplicação Java padrão. O assistente usado para criar a aplicação também criará uma classe Java. Em seguida, você usa as ferramentas do IDE para criar um cliente e consumir o Web service que criou no início deste tutorial.

  1. Selecione Arquivo > Novo Projeto (Ctrl-Shift-N no Linux e no Windows, ⌘-Shift-N no MacOS). Selecione Aplicação Java na categoria Java. Nomeie o projeto CalculatorWS_Client_Application. Deixe a opção Criar Classe Principal selecionada e aceite todas as outras definições default. Clique em Finalizar.
  2. Clique com o botão direito do mouse no nó CalculatorWS_Client_Application e selecione Novo > Cliente de Web Service. O assistente de Novo Cliente de Web Service será aberto.
  3. Selecione Projeto como o código-fonte WSDL. Clique em Procurar. Procure o Web service CalculatorWS no projeto CalculatorWSApplication. Depois de ter selecionado o Web service, clique em OK.
    Caixa de diálogo Web Services que mostra o serviço CalculatorWS
  4. Não selecione um nome de pacote. Deixe este campo vazio.
    Assistente Novo Cliente de Web Service que mostra o nome do pacote
  5. Deixe as outras definições como default e clique em Finalizar.

    A janela Projetos exibirá o novo cliente de Web service, com um nó para o método add que você criou:


    Novo cliente Web service na aplicação Java exibido na janela Projetos
  6. Clique duas vezes na classe principal para abri-la no Editor de Código-Fonte. Arraste o nó adicionar abaixo do método main().
    Arrastando e soltando a operação de adição no corpo da classe principal

    Agora você deverá ver o seguinte:

    public static void main(String[] args) {
        // TODO code application logic here
    }
    private static int add(int i, int j) {
        org.me.calculator.CalculatorWS_Service service = new org.me.calculator.CalculatorWS_Service();
        org.me.calculator.CalculatorWS port = service.getCalculatorWSPort();
        return port.add(i, j);
    }

    Observação: como alternativa, em vez de arrastar o nó adicionar , você pode clicar com o botão direito do mouse no editor e, em seguida, selecionar Inserir Código > Operação de Chamada a Web service.

  7. No corpo do método main(), substitua o comentário TODO com o código que inicializa os valores de i e j, chama add() e mostra o resultado.
    public static void main(String[] args) {
    int i = 3;
    int j = 4;
    int result = add(i, j);
    System.out.println("Result = " + result); }
  8. Circunde o código do método main() com um bloco try/catch que imprime uma exceção.
    public static void main(String[] args) {
    try {
    int i = 3;
    int j = 4;
    int result = add(i, j);
    System.out.println("Result = " + result);
    } catch (Exception ex) {
    System.out.println("Exception: " + ex);
    } }
  9. Clique com o botão direito do mouse no nó do projeto e selecione Executar.

    A janela de Saída agora mostra a soma:

        compile:
        run:
        Result = 7
          BUILD SUCCESSFUL (total time: 1 second)

Cliente 2: Servlet na Aplicação Web

Nesta seção, você cria uma nova aplicação Web e, depois disso, cria um servlet. Em seguida, usa o servlet para consumir o Web service que criou no início deste tutorial.

  1. Selecione Arquivo > Novo Projeto (Ctrl-Shift-N no Linux e no Windows, ⌘-Shift-N no MacOS). Na categoria Java Web, selecione Aplicação Web. Nomeie o projeto CalculatorWSServletClient. Clique em Próximo e, em seguida, em Finalizar.
  2. Clique com o botão direito do mouse no nó CalculatorWSServletClient e selecione Novo > Cliente de Web Service.

    O assistente Novo Cliente de Web service será exibido.

  3. Selecione Projeto como o código-fonte WSDL. Clique em Procurar. Procure o Web service CalculatorWS no projeto CalculatorWSApplication. Depois de ter selecionado o Web service, clique em OK.
    Caixa de diálogo Web Services que mostra o serviço CalculatorWS
  4. Não selecione um nome de pacote. Deixe este campo vazio.
  5. Deixe as outras definições como default e clique em Finalizar.

    O nó Referências do Web Service na janela Projetos exibe a estrutura do seu cliente recém-criado, incluindo a operação add que você criou anteriormente neste tutorial:


    Novo cliente de Web service no servlet exibido na janela Projetos
  6. Clique com o botão direito do mouse no nó do projeto CalculatorWSServletClient e selecione Novo > Servlet. Chame o servlet de ClientServlet e coloque-o em um pacote chamado org.me.calculator.client. Clique em Finalizar.
  7. Para tornar o servlet o ponto de entrada da aplicação, clique com o botão direito do mouse no nó do projeto CalculatorWSServletClient e selecione Propriedades. Abra as propriedades de Executar e digite /ClientServlet no campo URL Relativo. Clique em OK.
  8. Se houver ícones de erro em ClientServlet.java, clique com o botão direito do mouse no nó do projeto e selecione Limpar e Construir.
  9. No Editor de Código-Fonte, arraste a operação adicionar em qualquer lugar do corpo da classe ClientServlet. O método add() aparecerá ao final do código da classe.

    Observação: como alternativa, em vez de arrastar o nó adicionar , você pode clicar com o botão direito do mouse no editor e, em seguida, selecionar Inserir Código > Operação de Chamada a Web service.

    private int add(int i, int j) {
    org.me.calculator.CalculatorWS port = service.getCalculatorWSPort();
    return port.add(i, j); }
  10. No método processRequest(), adicione algumas linhas vazias depois desta linha:
        out.println("<h1>Servlet ClientServlet at " + request.getContextPath () + "</h1>");
  11. Adicione o código que inicializa os valores de i e j, chama add() e imprime o resultado. O código adicionado está em negrito:
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet ClientServlet</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet ClientServlet at " + request.getContextPath () + "</h1>");
    
            int i = 3;
    int j = 4;
    int result = add(i, j);
    out.println("Result = " + result);
    out.println("</body>"); out.println("</html>"); } finally {
    out.close();
    }
    }
  12. Circunde o código adicionado com um bloco try/catch que imprime uma exceção.
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet ClientServlet</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet ClientServlet at " + request.getContextPath () + "</h1>");
            try {
                int i = 3;
    int j = 4;
    int result = add(i, j);
    out.println("Result = " + result); } catch (Exception ex) { out.println("Exception: " + ex); } out.println("</body>"); out.println("</html>"); } finally {
    out.close();
    }
    }
  13. Clique com o botão direito do mouse no nó do projeto e selecione Executar.

    O servidor será iniciado, a aplicação será construída e implantada e o browser será aberto, exibindo o resultado do cálculo, como mostrado abaixo:
    Novo cliente de Web service no servlet exibido na janela Projetos

Cliente 3: Página JSP na Aplicação Web

Nesta seção, você cria uma nova aplicação Web e, em seguida, consome o Web service na página JSP default que o assistente Aplicação Web cria.

Observação: se você quiser executar um cliente de aplicação Web JSP em Oracle WebLogic, consulte Executando uma Aplicação Java Server Faces 2.0 em WebLogic.

  1. Selecione Arquivo > Novo Projeto (Ctrl-Shift-N no Linux e no Windows, ⌘-Shift-N no MacOS). Na categoria Java Web, selecione Aplicação Web. Nomeie o projeto CalculatorWSJSPClient. Clique em Próximo e, em seguida, em Finalizar.
  2. Clique com o botão direito do mouse no nó CalculatorWSJSPClient e selecione Novo > Cliente de Web service.
  3. Selecione Projeto como o código-fonte WSDL. Clique em Procurar. Procure o Web service CalculatorWS no projeto CalculatorWSApplication. Depois de ter selecionado o Web service, clique em OK.
    Caixa de diálogo Web Services que mostra o serviço CalculatorWS
  4. Não selecione um nome de pacote. Deixe este campo vazio.
  5. Deixe as outras definições como default e clique em Finalizar.

    A janela Projetos exibe o novo cliente de web service, como mostrado abaixo:


    Novo cliente de Web service no servlet exibido na janela Projetos
  6. No nó Referências de Web Services, expanda o nó que representa o Web service. A operação adicionar, que você chamará do cliente, agora está exposta.
  7. Arraste a operação adicionar para a página index.jsp do cliente e solte-a abaixo das tags H1. O código para chamar a operação de serviço agora é gerado na página index.jsp, como você pode ver aqui:
    <%
    try {
        org.me.calculator.CalculatorWSService service = new org.me.calculator.CalculatorWSService();
        org.me.calculator.CalculatorWS port = service.getCalculatorWSPort();
         // TODO initialize WS operation arguments here
        int i = 0;
        int j = 0;
        // TODO process result here
        int result = port.add(i, j);
        out.println("Result = "+result);
    } catch (Exception ex) {
        // TODO handle custom exceptions here
    }
    %>

    Altere o valor de i e j de 0 por outros inteiros, como 3 e 4. Substitua a linha TODO comentada no bloco catch por out.println("exception" + ex);.

  8. Clique com o botão direito do mouse no nó do projeto e selecione Executar.

    O servidor será iniciado, caso já não esteja em execução. A aplicação será construída e implantada e o browser será aberto, exibindo o resultado do cálculo:


    Página JSP que mostra o resultado


Consulte Também

Para obter mais informações sobre o uso do NetBeans IDE para desenvolver aplicações Java EE, consulte os seguintes recursos:

Para enviar comentários e sugestões, obter suporte e se manter informado sobre os mais recentes desenvolvimentos das funcionalidades de desenvolvimento Java EE do NetBeans IDE, inscreva-se na lista de notícias .

get support for the NetBeans

Support


By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2013, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo