FeaturesPluginsDocs & SupportCommunityPartners

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

API de Java para serviços Web XML (JAX-WS) 2.0, JSR 224 é uma parte importante da plataforma Java EE 5. Uma versão que dá continuidade à API de Java para RPC 1.1 (JAX-RPC) baseado em XML, 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 orienta você nas noções básicas do uso do IDE para desenvolver um serviço Web JAX-WS e consumi-lo em três clientes diferentes — uma classe Java em uma aplicação Java SE, ou um servlet ou uma página JSP em uma aplicação Web. Os três clientes que você cria neste documento são aplicações separadas, todos consumidores do mesmo serviço Web. Um tutorial mais avançado que focaliza os clientes é Introdução aos clientes de serviço Web JAX-WS.

Conteúdo

O conteúdo desta página se aplica ao NetBeans 6.0/6.1

Software necessário para o tutorial

Antes de começar, você deve instalar o seguinte software no seu computador:

  • Web e Java EE do NetBeans IDE 6.0(download).
  • Java Standard Development Kit (JDK), versão 5.0 ou 6.0 (download)
  • Servidor Web Glassfish V2 ou Tomcat, ambos podem ser selecionados no instalador que você usa para instalar o NetBeans IDE 6.0.

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 escolhas de implementação. Por exemplo, se você planejar implantar no servidor Web Tomcat, que tem somente um contâiner da Web, escolha criar uma aplicação Web, não um módulo EJB.

  1. Escolha Arquivo > Novo projeto (Ctrl-Shift-N). Selecione Aplicação Web na categoria Web ou Módulo EJB na categoria Empresa.
  2. Nomeie o projeto CalculatorWSApplication.
  3. Dependendo do servidor de deployment a ser usado, faça o seguinte:
    • Para GlassFish, defina a versão do Java EE como Java EE 5.
    • Para o servidor Web Tomcat, defina Nível de origem como 1.4.
  4. Clique em Terminar.

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, digite org.me.calculator em Pacote, e clique em Terminar.

    A janela Projetos exibe a estrutura do novo serviço Web e o visual designer é mostrado na área do editor. Por exemplo, para aplicações Web agora você deve ver o seguinte:

    A janela Projetos exibindo o novo serviço Web

Criando o serviço Web

O objetivo deste exercício é fazer algo significativo com os arquivos e o código que o IDE gerou para você. Você irá introduzir uma operação que irá adicionar dois números recebidos de um cliente.

Adicionando lógica empresarial ao serviço Web

  1. Clique em Adicionar operação no visual designer.

    Aparece uma caixa de diálogo, onde você pode definir a nova operação.

  2. Na parte superior da caixa de diálogo Adicionar operação, digite add em Nome e digite int na lista suspensa Tipo de retorno. Na parte inferior da caixa de diálogo Adicionar operação, clique em Adicionar e crie um parâmetro de tipo int chamado i. Em seguida, clique em Adicionar novamente e crie um parâmetro de tipo int chamado j.

    Agora você deve ver o seguinte:

    Adicionar operação

  3. Clique em OK na parte inferior da caixa de diálogo Adicionar operação.

    O visual designer agora exibe o seguinte:

    Resultado

  4. Clique em Código-fonte e observe que o código-fonte que foi gerado nas etapas anteriores é o seguinte:

    Resultado

  5. 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, usamos o IDE para testar nosso serviço Web.

Implantando e testando o serviço Web

Quando você implanta um serviço Web em um contâiner da Web, o IDE permite que você teste o serviço Web para ver se funciona como o esperado. A aplicação Testador, fornecida pelo GlassFish, é integrada no IDE para essa finalidade. Para o servidor Web Tomcat, há uma ferramenta semelhante. Entretanto, embora a página Testador do GlassFish permita que você indique valores e teste-os, o servidor Web Tomcat não permite. No último caso, você somente vê se o serviço Web está implantado, não pode testar os valores. Não há um recurso disponível para testar se um módulo EJB foi implantado com êxito.

Para testar um deployment bem-sucedido em um contâiner da Web:

  1. Clique com o botão direito do mouse no projeto e escolha Executar.

    O IDE inicia o servidor da aplicação, constrói a aplicação e o navegador se abre.

  2. Expanda o nó Serviços Web, clique com o botão direito do mouse no nó que representa seu serviço Web, e escolha Testar serviço Web.

    O IDE abre a página do testador em seu navegador, caso você tenha implantado uma aplicação Web no GlassFish. Para o servidor Web Tomcat e o deployment de módulos EJB, a situação é diferente.

    • Se você implantou no GlassFish, digite dois números na página do testador, como mostrado abaixo:

      Página do testador do serviço Web implantada com êxito no 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

    • Clique com o botão direito do mouse no nó do projeto, escolha Propriedades e clique em Executar. Dependendo do servidor de deployment a ser usado, faça o seguinte:
      • Para GlassFish, digite /CalculatorWSService?Tester no camp URL relativa.
      • Para o servidor Web Tomcat, digite /CalculatorWS?Tester no campo URL relativo.

      Observação: como o resultado de um módulo EJB implantado não é exibido em um navegador, você não pode realizar a etapa acima, caso esteja trabalhando com um módulo EJB.

Consumindo o serviço Web

Agora que implantamos nosso serviço Web, precisamos criar um cliente para utilizar o método add do serviço Web. Aqui criamos 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 é Introdução aos clientes de serviço Web JAX-WS.

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

Nesta seção, criamos uma aplicação Java padrão. O assistente que usamos para criar a aplicação também criará uma classe Java. Em seguida, usaremos as ferramentas do IDE para consumir o serviço Web que criamos no início deste tutorial.

  1. Escolha Arquivo > Novo projeto (Ctrl-Shift-N). Selecione Aplicação Java na categoria Geral. Nomeie o projeto CalculatorWS_Client_Application. 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.
  3. Em Projeto, clique em Navegar. Navegue até o serviço Web que você deseja consumir. Depois de selecionar o serviço Web, clique em OK.
  4. Digite org.me.calculator.client em Pacote 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

  5. Clique duas vezes em Main.java para abri-lo no Editor de código-fonte. Exclua o comentário TODO e arraste o nó add acima para a linha vazia. Agora você deve ver o seguinte:
    public static void main(String[] args) {
    
        try { // Call Web Service Operation
            org.me.calculator.client.CalculatorWSService service = new org.me.calculator.client.CalculatorWSService();
            org.me.calculator.client.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);
            System.out.println("Result = "+result);
        } catch (Exception ex) {
            // TODO handle custom exceptions here
        }
    
    }

    Observação: como alternativa, em vez de adicionar o nó add, você pode clicar com o botão direito do mouse no editor e escolher Recursos de cliente de serviço Web > Chamar operação de serviço Web.

  6. Inicialize dois ints, usando números significativos, tais como 3 e 4. Apenas altere os valores dos dois ints acima de 0 para algum outro número.
  7. Clique com o botão direito do mouse no nó do projeto e escolha Executar.

    A janela Saída agora deve mostrar a soma:

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

Cliente 2: Servlet na aplicação Web

Nesta seção, criamos uma nova aplicação Web, depois disso, criamos um servlet. Em seguida, usamos o servlet para consumir o serviço Web que criamos no início deste tutorial.

  1. Escolha Arquivo > Novo projeto (Ctrl-Shift-N). Na categoria Web, selecione Aplicação Web. Nomeie o projeto CalculatorWSServletClient. Clique 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. Em Projeto, clique em Navegar. Navegue até o serviço Web que você deseja consumir. Depois de selecionar o serviço Web, clique em OK.
  4. Em Pacote, digite org.me.calculator.client.
  5. Agora você deve ver o seguinte:

    Novo cliente de serviço Web no servlet exibido na janela Projetos

    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 para a aplicação, clique com o botão direito do mouse no nó do projeto, escolha Propriedades, selecione Executar e digite /ClientServlet em URL relativo. Clique em OK.
  8. No Editor de código-fonte, remova a linha que comenta o corpo do método processRequest. Esta é a linha:
        /* TODO saída da página aqui

    Em seguida, exclua a linha que encerra a seção do código comentado:

        */

    Adicione algumas linhas vazias depois desta linha:

        out.println("<h1>Servlet ClientServlet at " + request.getContextPath () + "</h1>");

    Agora, arraste o nó que representa a operação add para o espaço que você criou.

    O método processRequest agora tem a seguinte aparência (o código adicionado está em negrito abaixo):

        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();
            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 { // Call Web Service Operation
                org.me.calculator.client.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
            }
    
            out.println("</body>");
            out.println("</html>");
            out.close();
         }

    Altere o valor de i e j para números mais significativos, tais como 3 e 4.

  9. Clique com o botão direito do mouse no nó do projeto e escolha Executar.

    O servidor se inicia, caso já não estivesse sendo executado; a aplicação é construída e implantada, e o navegador se abre, exibindo o resultado do cálculo, como mostrado abaixo:

  10. Novo cliente de serviço Web no servlet exibido na janela Projetos

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

Nesta seção, criamos uma nova aplicação Web e, em seguida, consumimos nosso serviço Web na página JSP padrão que o assistente para Aplicação Web cria.

  1. Escolha Arquivo > Novo projeto (Ctrl-Shift-N). Na categoria Web, selecione Aplicação 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. Em Projeto, clique em Navegar. Navegue até o serviço Web que você deseja consumir. Depois de selecionar o serviço Web, clique em OK.
  4. Em Pacote, digite org.me.calculator.client.

    Agora você deve ver o seguinte:

    Novo cliente de serviço Web no servlet exibido na janela Projetos

    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

  5. No nó Referências de serviços Web, expanda o nó que representa o serviço Web. A operação add, que você deseja invocar do cliente, agora está exposta.
  6. 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.client.CalculatorWSService service =
            new org.me.calculator.client.CalculatorWSService();
        org.me.calculator.client.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 para números mais significativos, tais como 3 e 4.

  7. Clique com o botão direito do mouse no nó do projeto e escolha Executar.

    O servidor é iniciado, se já não estava em execução, a aplicação é construída e implantada, 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 6.0 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 dos recursos de desenvolvimento de Java EE do NetBeans IDE, inscreva-se na lista de endereçamento de.

Bookmark this page

del.icio.us furl simpy slashdot technorati digg
Companion
Projects:
MySQL Database Server   Open JDK: an Open SourceJDK   GlassFish Community: an Open Source Application Server    Mobile & Embedded Community    Open Solaris   java.net - The Source for Java Technology Collaboration   Open ESB - The Open Enterprise Service Bus Powered by