corner imagecorner image
IDEPlatformPluginsDocs & SupportCommunityPartners

Introdução aos serviços Web JAX-WS

API de Java para serviços Web XML (JAX-WS), JSR 224 é uma parte importante das plataformas Java EE 5 e EE 6. Uma sequência da versão da API de Java para RPC 1.1 (JAX-RPC) com base em XML, o JAX-WS simplifica a tarefa de desenvolvimento de serviços Web utilizando a tecnologia Java. Ela enfoca alguns dos problemas em JAX-RPC 1.1 fornecendo suporte a múltiplos protocolos, como SOAP 1.1, SOAP 1.2, XML, e fornecendo um recurso para dar suporte a protocolos adicionais junto com HTTP. JAX-WS usa JAXB 2.0 para vinculação de dados e dá suporte a personalizações para controlar interfaces de ponto de extremidade de serviço geradas. Com suporte a anotações, JAX-WS simplifica o desenvolvimento do serviço Web e reduz o tamanho de arquivos JAR do tempo de execução.

Este documento demonstra os conceitos básicos sobre o uso do IDE no desenvolvimento de um serviço Web JAX-WS. Após criar o serviço Web, você escreve três clientes de serviço Web que usam serviço Web em uma rede, denominado "consumo" de um serviço Web. 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 focaliza os clientes é Desenvolvendo clientes de serviço Web JAX-WS.

Conteúdo

O conteúdo desta página se aplica ao IDE NetBeans 6.9–7.1

Para seguir este tutorial, você precisa dos seguintes recursos e softwares.

Software ou recurso Versão necessária
NetBeans IDE Pacote de download Java
Java Development Kit (JDK) JDK 6 ou JDK 76
Aviso: O NetBeans IDE 6.9 requer o JDK 6
Servidor de aplicativos ou Web compatível com Java EE Servidor Web Tomcat 6.x-7.0
GlassFish Server Open Source Edition
Oracle WebLogic Server

Observação: o Tomcat e o GlassFish Server podem ser instalados com a distribuição Web e Java EE do NetBeans IDE. Alternativamente, você pode visitar a página de download do servidor GlassFish ou a página de download do Apache Tomcat.

Importante: os projetos Java EE 6 requerem o Tomcat 7.x, GlassFish Server 3.x ou Oracle WebLogic Server 12c.

Criando um serviço Web

O objetivo deste exercício é criar um projeto apropriado para desenvolver um contêiner que você resolva utilizar. Uma vez criado o projeto, você irá criar nele um serviço Web.

Escolhendo um contêiner

Você pode implantar o serviço Web em um contêiner da Web ou em um contêiner EJB. Isso depende das suas escolhas de implementação. Se estiver criando uma aplicação Java EE 6, 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 da Web, crie uma aplicação Web, não um módulo EJB.

  1. Escolha 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.

    É possível criar um serviço web 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 Aplicativo da Web Maven ou Maven EJB na categoria Maven. Se você nunca usou Maven com NetBeans, consulte Práticas recomendadas 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 Terminar.

    Para usar o servidor Oracle WebLogic, registre o servidor com o IDE. Além disso, se você está usando o servidor WebLogic, observe a screencast em Implantando de um aplicativo da Web para Oracle WebLogic.

Criando um serviço Web a partir de uma classe Java

  1. Clique com o botão direito do mouse no nó CalculatorWSApplication e escolha Novo > Serviço Web.
  2. Chame o serviço Web de CalculatorWS e digite org.me.calculator no Pacote. Deixe selecionado o Criar serviço Web desde o início.
  3. Se você estiver criando um projeto Java EE 6, selecione Implementar serviço Web como um Bean de sessão sem estado.
    Assistente para novo serviço Web do Java EE 6, com opções de Bean
  4. Clique em Terminar. A janela Projetos exibe a estrutura do novo serviço Web e o código-fonte é mostrado na área do editor.

Adicionando uma operação ao serviço Web

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

Atenção: o designer virtual não está disponível em projetos Maven.

Para adicionar uma operação a um serviço Web:

  1. Ou:
    • Altere a visualização para Desenho no editor.
      Visualização Desenho do editor de serviço Web

    Ou:

    • Localize o nó do serviço Web na janela Projetos. Clique com o botão direito no nó. Aparecerá um menu de contexto.
      Menu de contexto do nó do serviço Web com o item Adicionar operação realçado
  2. Clique em Adicionar operação do designer visual ou no menu de contexto. Abre-se a caixa de diálogo Adicionar operação.
  3. Na parte superior da caixa de diálogo Adicionar operação, digite add em Nome e digite int na lista suspensa 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 do tipo int chamado de j.

    Agora você deve ver o seguinte:


    Add Operation dialog
  6. Clique em OK na parte inferior da caixa de diálogo Adicionar operação. Retorna-se ao editor.
  7. Remova a operação hello padrão excluindo 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 serviço Web mostrando a operação adicioanada
  8. Clique em Código-fonte e visualize o código que você gerou nas etapas anteriores. Será diferente se você tiver criado o serviço como um Bean sem estado EE6 ou não. Você pode perceber as diferenças das capturas de tela abaixo?
    Resultado: EE5Resultado: Bean sem estado EE 6
  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 serviço Web simplesmente recebe dois números e retorna a soma deles. Na próxima seção, você usa o IDE para testar o serviço Web.

Implantando e testando o serviço Web

Depois de implantado um serviço Web num servidor, é possível usar o IDE para abrir o cliente de teste do servidor caso este tenha um cliente de teste. Os servidores GlassFish e WebLogic oferecem clientes de teste. Se o servidor web usado for um Tomcat, não haverá cliente de teste, mas o IDE pode abrir uma página mostrando que o serviço Web está implantado. Não há um recurso disponível para testar se um módulo EJB foi implantado com êxito.

Para testar com sucesso a implementação a um servidor:

  1. Clique com o botão direito do mouse no projeto e escolha Implantar. O IDE inicia o servidor de aplicativo, constrói e implanta o aplicativo no servidor. Você pode acompanhar o progresso dessas operações no CalculatorWSApplication (run-deploy) e nas abas do servidor GlassFish ou Tomcat na janela Saída.
  2. Na aba Projetos do IDE, expanda o nó Serviços da Web do projeto CalculatorWSApplication. Clique com o botão direito do mouse no nó CalculatorWS e escolha Testar serviços Web.
    Aba Projetos mostrando a opção do menu de contexto Testar serviços Web

    O IDE abre a página do testador em seu navegador, se você tiver implantado um aplicativo da Web no servidor GlassFish. Para o servidor Web Tomcat e o deployment de módulos EJB, a situação é diferente:

    • Se você implantou no servidor GlassFish, digite dois números na página do testador, como mostrado abaixo:
      Página do testador do serviço da Web implantada com êxito no servidor GlassFish

      A soma dos dois números é exibida:


      Página da Web mostrando resultado do teste do serviço Web
    • Se implantou no servidor Web Tomcat, você verá o que se segue, indicando que o serviço da Web foi implantado com êxito:
      Página da Web exibida quando o serviço Web é implantado com êxito no servidor Tomcat

Amostras

É possível abrir uma versão completa do EE6 do serviço Calculadora selecionando-se Arquivo > Novo projeto (Ctrl-Shift-N no Linux e no Windows, ⌘-Shift-N no MacOS) e navegar até Amostras > Serviços Web Java > Calculadora (EE6).

Um serviço de calculadora Maven e um cliente de calculadora Maven estão disponíveis em Amostras > Maven.

Consumindo o serviço Web

Agora que você implantou o serviço Web, precisa criar um cliente para utilizar o método add do serviço Web. 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 focaliza os clientes é Desenvolvendo clientes de serviço Web JAX-WS.

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

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

  1. Escolha Arquivo > Novo projeto (Ctrl-Shift-N no Linux e no Windows, ⌘-Shift-N no MacOS). Selecione Aplicativo Java na categoria Java. Nomeie o projeto CalculatorWS_Client_Application. Deixe selecionada a opção Criar classe principal e aceite todas as outras configurações padrão. Clique em Terminar.
  2. Clique com o botão direito do mouse no nó CalculatorWS_Client_Application e escolha Novo > Cliente do serviço Web. O assistente para Novo cliente de serviço da Web é aberto.
  3. Selecione Projeto como o código-fonte WSDL. Clique em Procurar. Procure o serviço da web CalculatorWS no projeto CalculatorWSApplication. Depois de selecionar o serviço Web, clique em OK.
    Caixa de diálogo Procurar serviços Web mostrando o serviço CalculatorWS
  4. Não selecione um nome de pacote. Deixe este campo vazio.
    Assistente para Novo cliente de serviço Web mostrando o nome do pacote
  5. Deixe as outras configurações com o padrão e clique em Terminar.

    A janela Projetos exibe o novo cliente de serviço Web, com um nó para o método add que você criou:


    O novo cliente de serviço Web na aplicação Java SE 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().
    Operação de arrastar e soltar a operação adicionar no corpo da classe principal

    Agora você deve 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: alternativamente, em vez de arrastar o nó adicionar , é possível clicar com o botão direito do mouse no editor e a seguir escolher Inserir código > Operação de chamada do serviço da Web.

  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. Cerque o código do método main() com um bloco tentar/obter 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 escolha Executar.

    A janela 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 serviço Web que criou no início deste tutorial.

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

    O assistente para Novo cliente de serviço Web é exibido.

  3. Selecione Projeto como o código-fonte WSDL. Clique em Procurar. Procure o serviço da web CalculatorWS no projeto CalculatorWSApplication. Depois de selecionar o serviço Web, clique em OK.
    Caixa de diálogo Procurar serviços Web mostrando o serviço CalculatorWS
  4. Não selecione um nome de pacote. Deixe este campo vazio.
  5. Deixe as outras configurações com o padrão e clique em Terminar.

    O nó Referências do serviço Web 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 serviço Web no servlet exibido na janela Projetos
  6. Clique com o botão direito do mouse no nó do projeto CalculatorWSServletClient e escolha Novo > Servlet. Chame o servlet de ClientServlet e coloque-o em um pacote chamado org.me.calculator.client. Clique em Terminar.
  7. Para tornar o servlet o ponto de entrada do aplicativo, clique com o botão direito do mouse no nó do projeto CalculatorWSServletClient e escolha Propriedades. Abra as propriedades de execução e digite /ClientServlet no campo URL relativa. 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çãoadicionar em qualquer lugar do corpo da classe ClientServlet. O método add() aparece ao final do código da classe.

    Observação: alternativamente, em vez de arrastar o nó adicionar , é possível clicar com o botão direito do mouse no editor e a seguir escolher Inserir código > Operação de chamada do serviço da Web.

    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 mostra 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. Cerque o código adicionado com um bloco tentar/obter 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 escolha Executar.

    O servidor se inicia, o aplicativo é construído e implantado e o navegador se abre, exibindo o resultado do cálculo, como mostrado abaixo:
    Novo cliente de serviço Web 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 serviço Web na página JSP padrão que o assistente para Aplicação Web cria.

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

  1. Escolha Arquivo > Novo projeto (Ctrl-Shift-N no Linux e no Windows, ⌘-Shift-N no MacOS). Na categoria Java Web, selecione Aplicativo da Web. Nomeie o projeto CalculatorWSJSPClient. Clique em Terminar.
  2. Clique com o botão direito do mouse no nó CalculatorWSJSPClient e escolha Novo > Cliente de serviço Web.
  3. Selecione Projeto como o código-fonte WSDL. Clique em Procurar. Procure o serviço da web CalculatorWS no projeto CalculatorWSApplication. Depois de selecionar o serviço Web, clique em OK.
    Caixa de diálogo Procurar serviços Web mostrando o serviço CalculatorWS
  4. Não selecione um nome de pacote. Deixe este campo vazio.
  5. Deixe as outras configurações com o padrão e clique em Terminar.

    A janela Projetos exibe o novo cliente de serviço Web, como mostrado abaixo:


    Novo cliente de serviço Web no servlet exibido na janela Projetos
  6. No nó Referências de serviços Web, expanda o nó que representa o serviço Web. A operação add, que você invocará do cliente, agora está exposta.
  7. Arraste a operação add para a página index.jsp do cliente, e solte-a abaixo das marcas 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, tais 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 escolha Executar.

    O servidor se inicia, caso já não esteja em execução. O aplicativo é construído e implantado, e o navegador se abre, exibindo o resultado do cálculo:


    Página JSP mostrando resultado


Veja também

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

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