FeaturesPluginsDocs & SupportCommunityPartners

Serviços da Web (JAX-WS) no Java EE 5

API de Java para serviços da 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 da 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 da 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 da Web JAX-WS e consumi-lo em três clientes diferentes — uma classe Java em um aplicativo Java SE, ou um servlet ou uma página JSP em um aplicativo da Web. Os três clientes que você cria neste documento são aplicativos separados, todos consumidores do mesmo serviço da Web.

Duração prevista: 25 minutos

Software necessário para o tutorial

Antes de começar, é necessário instalar os seguintes softwares no computador:

  • NetBeans IDE 5.5 (download).
  • Java Standard Development Kit (JDK), versão 5.0 ou 6.0 (download)
  • Sun Java System Application Server 9.0 (se não incluído na instalação do NetBeans IDE, faça o download e o instale separadamente).

Exercícios do tutorial

Instalando e configurando o ambiente do tutorial

Se você não registrou uma instância do Sun Java System Application Server 9.0, é necessário fazê-lo antes de poder começar a desenvolver aplicativos Java EE 5:

  1. Na janela principal, escolha Ferramentas > Gerenciador de servidores.
  2. Clique em Adicionar servidor. Selecione o servidor de aplicativos Sun Java System e dê um nome à instância. Em seguida clique em Próximo.
  3. Especifique as informações do servidor, a localização da instância local do servidor de aplicativo e o domínio no qual você deseja implantar.
  4. Clique em Finalizar.

Observação: Se desejar implantar no servidor Web Tomcat, pode fazê-lo, exceto que, uma vez que este tem somente um recipiente da Web, você deve criar um aplicativo da Web, não um módulo EJB, na próxima seção. Os serviços da Web JAX-WS, ao contrário dos serviços da Web JSR-109, podem ser implantados com êxito em um recipiente da Web Tomcat.

Criando um serviço da Web

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

Escolhendo um recipiente

Você pode implantar o serviço da Web em um recipiente da Web ou em um recipiente EJB. Isso depende das escolhas de implementação. Por exemplo, se você planejar implantar no servidor da Web Tomcat, que tem somente um recipiente da Web, escolha criar um aplicativo da Web, não um módulo EJB.

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

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

  1. Clique com o botão direito do mouse no nó CalculatorWSApplication e escolha Novo > Serviço da Web.
  2. Nomeie o serviço da Web CalculatorWS, digite org.me.calculator em Pacote e clique em Finalizar.

    A janela Projetos exibe o novo serviço da Web. Por exemplo, para aplicativos da Web, a janela Projetos agora tem esta aparência:

    A janela Projetos exibindo o novo serviço da Web

    O IDE cria automaticamente os descritores de implantação necessários para o servidor, se houver um. Para o servidor de aplicativos Sun Java System, não é necessário um descritor de implantação. Para serviços da Web implantados no servidor Web Tomcat, sun-jaxws.xml e um item WSServlet em web.xml são adicionados.

Resumo

Neste exercício, você criou um projeto do NetBeans e configurou o serviço da Web.

Codificando o serviço da 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 da Web

  1. Expanda o nó Serviços da Web e clique duas vezes no nó CalculatorWS. O serviço da Web se abre no Editor de fontes. Observe que já existe uma operação no código. Ele está comentado. Aqui, criamos uma nova operação a partir do começo. Outra maneira de criar a operação seria remover as linhas que comentam o código.
  2. Clique com o botão direito do mouse no corpo da classe, acima ou abaixo do código comentado, e escolha Serviço da Web > Adicionar operação.
  3. Na parte superior da caixa de diálogo Adicionar operação, digite add em Nome e selecione 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 do tipo int nomeado i. Clique em OK.
  5. Clique em Adicionar novamente e crie um parâmetro do tipo int chamado j.
  6. Clique em OK na parte inferior da caixa de diálogo Adicionar operação. Observe que um esqueleto para o método add foi adicionado ao Editor de fontes:
        @WebMethod
        public int add(@WebParam(name = "i") int i, @WebParam(name = "j") int j) {
            // TODO operação de implementação
            return 0;
                }
  7. Altere o método add para o seguinte (as alterações estão em negrito):
        @WebMethod
        public int add(@WebParam(name = "i") int i, @WebParam(name = "j") int j) {
            int k = i + j;
            return k;
            }

Resumo

Neste exercício, você adicionou código ao serviço da Web.

Implantando e testando o serviço da Web

Quando você implanta um serviço da Web em um recipiente da Web, o IDE permite que você teste o serviço da Web para ver se funciona como o esperado. O aplicativo de teste, fornecido pelo servidor de aplicativos Sun Java System, é integrado ao IDE para este fim. Para o servidor Web Tomcat, há uma ferramenta semelhante. No entanto, enquanto a página do aplicativo de teste do servidor de aplicativos Sun Java System permite que você insira valores e os teste, o servidor Web Tomcat não. No último caso, você somente vê se o serviço da 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 uma implantação bem-sucedida em um recipiente da Web:

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

    Observação: Uma vez que o resultado de um módulo EJB implantado não é exibido em um navegador, não será possível executar a etapa acima se você estiver trabalhando com um módulo EJB.

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

    O IDE inicia o servidor de aplicativos, constrói o aplicativo e abre a página de teste no navegador, se você implantou um aplicativo da Web no servidor de aplicativos Sun Java System. Para o servidor Web Tomcat e a implantação de módulos EJB, a situação é diferente.

    • 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 da Web é implantado com êxito no servidor Tomcat

    • Se implantou um módulo EJB, a implantação bem-sucedida é indicada pelas seguintes mensagens na janela Saída:
          Implantação do aplicativo CalculatorWSApplication  concluída com êxito
          Ativação do CalculatorWSApplication no servidor de destino   concluída com êxito
          Ativação de aplicativo em todos os destino  concluída com êxito
          Todas as operações concluídas com êxito
          executar-implantar:
          executar:
          CONSTRUÇÃO BEM-SUCEDIDA
    • Se você implantou no servidor de aplicativos Sun Java System, digite os dois números na página de teste, como mostrado abaixo:

      A página de teste do serviço da Web quando o serviço é implantado com êxito no servidor de aplicativos Sun Java System

      A soma dos dois números é exibida:

      Página da Web mostrando resultado do teste do serviço da Web

Resumo

Neste exercício, você implantou e testou um serviço da Web.

Consumindo o serviço da Web

Agora que implantamos nosso serviço da Web, precisamos criar um cliente para utilizar o método add do serviço da Web. Aqui criamos três clientes — uma classe Java em um aplicativo Java SE, um servlet e uma página JSP em um aplicativo da Web.

Cliente 1: Classe Java em um aplicativo Java SE

  1. Escolha Arquivo > Novo projeto (Ctrl-Shift-N). Selecione Aplicativo Java na categoria Geral. Nomeie o projeto CalculatorWS_Client_Application.

    Observação: No momento da redação, o problema Problema 10 não estava resolvido; portanto, você deve criar seu cliente do serviço da Web em uma pasta de projeto que não contenha espaços no caminho. Por exemplo, o caminho não deve ser "C:\Documentos e configurações\...".

    Clique em Finalizar.
  2. Clique com o botão direito do mouse no nó CalculatorWS_Client_Application e escolha Novo > Cliente do serviço da Web.
  3. Em Projeto, clique em Navegar. Navegue até o serviço da Web que você deseja consumir. Depois de selecionar o serviço da Web, clique em OK.
  4. Digite org.me.calculator.client em Pacote e clique em Finalizar.

    A janela Projetos exibe o novo cliente do serviço da Web:

    O novo cliente do serviço da Web no aplicativo Java SE exibido na janela Projetos

  5. Clique duas vezes em Main.java para abri-lo no Editor de fontes. Exclua o comentário TODO e clique nessa linha com o botão direito do mouse. Escolha Recursos do cliente de serviço da Web > Chamar operação de serviço da Web.
  6. Navegue até a operação Adicionar e clique em OK.
  7. Altere a linha que está sublinhada em vermelho para o seguinte:
        System.out.println("Sum: " + port.add(3,4));
  8. Clique com o botão direito do mouse no nó do projeto e escolha Executar projeto.

    A janela Saída agora deve mostrar o seguinte:

        compilar:
        executar:
        Soma: 7
            CONSTRUÇÃO BEM-SUCEDIDA (tempo total: 1 segundo)

Cliente 2: Servlet em aplicativo da Web

  1. Escolha Arquivo > Novo projeto (Ctrl-Shift-N). Na categoria Web, selecione Aplicativo da Web. Nomeie o projeto CalculatorWSServletClient.

    Observação: No momento da redação, o problema Problema 10 não estava resolvido; portanto, você deve criar seu cliente do serviço da Web em uma pasta de projeto que não contenha espaços no caminho. Por exemplo, o caminho não deve ser "C:\Documentos e configurações\...".

    Clique em Finalizar.

  2. Clique com o botão direito do mouse no nó CalculatorWSServletClient e escolha Novo > Cliente de serviço da Web.
  3. Em Projeto, clique em Navegar. Navegue até o serviço da Web que você deseja consumir. Depois de selecionar o serviço da Web, clique em OK.
  4. Digite org.me.calculator.client em Pacote e clique em Finalizar.

    A janela Projetos exibe o novo cliente do serviço da Web:

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

  5. Clique com o botão direito do mouse no nó do projeto e escolha Novo > Servlet. Nomeie o servlet ClientServlet e o hospede em um pacote chamado org.me.calculator.client. Clique em Finalizar. Para tornar o servlet o ponto de entrada para o aplicativo, 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.
  6. No Editor de fontes, remova a linha que comenta o corpo do método processRequest. Esta é a linha que inicia a seção que comenta o código:
        /* 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 clique com o botão direito do mouse em uma das linhas vazias que você adicionou. Escolha Recursos do cliente de serviço da Web > Chamar operação de serviço da Web. A caixa de diálogo Selecionar operação para chamada será exibida.

  7. Navegue até a operação add e clique em OK.

    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.CalculatorWSService service = new org.me.calculator.client.CalculatorWSService();
                org.me.calculator.client.CalculatorWS port = service.getCalculatorWSPort();
                // TODO inicializar argumentos da operação SW aqui
                int arg0 = 0;
                int arg1 = 0;
                // TODO processar resultado aqui
                int result = port.add(arg0, arg1);
                System.out.println("Result = "+result);
            } catch (Exception ex) {
                // TODO manipular exceções personalizadas aqui
            }
    
            out.println("</body>");
            out.println("</html>");
            out.close();
                }

    Altere o valor de arg0 e arg1 para outros números, como 3 e 4.

    Altere a instrução System.out.println para out.println.

    Adicione uma linha que imprima uma exceção, se uma exceção for lançada.

    O bloco try/catch deve ter a seguinte aparência (linhas novas e alteradas estão realçadas):

        try { // Call Web Service Operation
            org.me.calculator.client.CalculatorWSService service = new org.me.calculator.client.CalculatorWSService();
            org.me.calculator.client.CalculatorWSApplication port = service.getCalculatorWSApplicationPort();
            // TODO inicializar argumentos da operação SW aqui
            int arg0 = 3;
            int arg1 = 4;
            // TODO processar resultado aqui
            int result = port.add(arg0, arg1);
            out.println("<p>Result: " + result);
        } catch (Exception ex) {
            out.println("<p>Exception: " + ex);
                }
  8. Clique com o botão direito do mouse no nó do projeto e escolha Executar projeto.

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

Cliente 3: Página JSP em aplicativo da Web

  1. Escolha Arquivo > Novo projeto (Ctrl-Shift-N). Na categoria Web, selecione Aplicativo da Web. Nomeie o projeto CalculatorWSJSPClient.

    Observação: No momento da redação, o problema Problema 10 não estava resolvido; portanto, você deve criar seu cliente do serviço da Web em uma pasta de projeto que não contenha espaços no caminho. Por exemplo, o caminho não deve ser "C:\Documentos e configurações\...".

    Clique em Finalizar.

  2. Clique com o botão direito do mouse no nó CalculatorWSJSPClient e escolha Novo > Cliente de serviço da Web.
  3. Em Projeto, clique em Navegar. Navegue até o serviço da Web que você deseja consumir. Depois de selecionar o serviço da Web, clique em OK.
  4. Digite org.me.calculator.client em Pacote e clique em Finalizar.

    A janela Projetos exibe o novo cliente do serviço da Web.

  5. Na pasta Páginas da Web, clique duas vezes em index.jsp para que seja aberto no Editor de fontes.
  6. No nó Referências de serviços da Web, expanda o nó que representa o serviço da Web. A operação add, que você deseja 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 a invocação da operação do serviço agora é gerado na página index.jsp.

    Altere o valor de arg0 e arg1 para outros números, como 3 e 4.

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

    O servidor é iniciado, se já não estava 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



Próximas etapas

Para obter mais informações sobre o uso do NetBeans IDE 5.5 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 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   Virtual Box - full virtualizer  Open ESB - The Open Enterprise Service Bus Powered by