FeaturesPluginsDocs & SupportCommunityPartners

Desenvolvendo clientes de serviço Web JAX-WS

Neste tutorial, use os recursos de serviço Web fornecidos pelo NetBeans IDE 6.0 ou 6.1 para analisar um serviço Web de verificador ortográfico e depois construir um cliente Web que interaja com ele.

Conteúdo

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

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

Software ou recurso Versão necessária
NetBeans IDE Web e Java EE versão 6.0 ou 6.1
Java Development Kit (JDK) versão 6 ou
versão 5
Servidor da aplicação ou Web compatível com Java EE Servidor Web Tomcat 6.0 e/ou
Servidor da aplicação GlassFish v2

O Tomcat e o GlassFish podem ser instalados com a distribuição Web e Java EE do NetBeans IDE. Como alternativa, você pode visitar a página de download do GlassFish ou a página de download do Apache Tomcat.

Esta será a aparência do cliente, com todos os dados recebidos do serviço Web:

Relatório do verificador ortográfico

Ao final deste tutorial, você descobrirá que sua única contribuição à aplicação consiste em fornecer o texto a ser verificado, chamar uma operação no serviço Web e renderizar o resultado. O IDE gera todo o código necessário para entrar em contato com o serviço Web e enviar o texto. O serviço Web de verificador ortográfico cuida do resto, identifica as palavras escritas incorretamente e fornece uma lista das alternativas sugeridas.

Observação: o serviço Web de corretor ortográfico usado neste tutorial é fornecido pela CDYNE Corporation. A CDYNE desenvolve, comercializa e oferece suporte a um conjunto abrangente de serviços Web de análise de dados, qualidade de dados e aprimoramento de dados e integração de inteligência comercial. O serviço Web de verificador ortográfico é um dos serviços Web fornecidos pela CDYNE. Observe que a capacidade de uma aplicação baseada em um ou mais serviços Web depende da disponibilidade e confiabilidade dos serviços Web. Entretanto, as perguntas freqüentes da CDYNE apontam que ela possui como "objetivo a disponibilidade total" e, no caso de um "desastre natural, ato terrorista ou outra catástrofe, o tráfego do serviço Web será transferido para o centro de dados secundário". A NetBeans agradece à CDYNE por permitir que este tutorial fosse escrito e por oferecer suporte ao seu desenvolvimento.

Consumindo o serviço Web de verificador ortográfico

Para consumir um serviço Web, é necessário criar um cliente de serviço Web. Para a criação de clientes de serviço Web, o NetBeans IDE 6.1 e 6.0 fornece um recurso de criação de cliente - o assistente para Cliente de serviço Web que gera código para pesquisar um serviço Web. Ele também fornece recursos para desenvolver o cliente de serviço Web criado - uma área de trabalho que consiste em nós na janela Projetos. Esses recursos são parte da instalação padrão do NetBeans IDE, eles estão disponíveis para uso imediato e não são necessários plug-ins.

Criando o cliente

Nesta seção, usamos um assistente para gerar objetos Java do arquivo WSDL do serviço Web.

  1. Escolha Arquivo > Novo projeto (Ctrl-Shift-N). Em Categorias, selecione Web. Em Projetos , escolha Aplicação Web. Clique em Próximo. Nomeie o projeto como SpellCheckService e certifique-se de especificar um servidor apropriado como o servidor de destino. (Consulte a seção "Primeiros passos" para ver os detalhes). Clique em Terminar.
  2. Na janela Projetos, clique com o botão direito do mouse no nó do módulo de projeto e selecione Novo > Outro. No assistente para Novo arquivo, escolha Serviços Web > Cliente do serviço Web. No assistente do Cliente de serviço Web, especifique a URL para o serviço Web:

    http://ws.cdyne.com/SpellChecker/check.asmx

    Se você estiver protegido por firewall, talvez tenha que especificar um servidor proxy, do contrário, o arquivo WSDL não poderá ser baixado. Se esse for o caso, clique em Configurações do proxy no assistente do Cliente de serviço Web e defina o host do proxy e o número da porta.

  3. Deixe o nome do pacote em branco — no NetBeans IDE 6.1 você não tem permissão para especificar um nome de pacote. Por padrão, o nome do pacote de classe do cliente é baseado no WSDL. Nesse caso, é com.cdyne.ws.
  4. No 6.1, selecione a versão de JAX JAX-WS (alguns serviços mais antigos requerem clientes JAX-RPC). Clique em Terminar.
  5. Na janela Projetos, no nó Referências de serviços Web, você deverá ver o seguinte:
    Janela Projetos mostrando referências de serviço Web

A janela Projetos mostra que um serviço Web chamado 'check' tornou a operação 'CheckTextBody' disponível para a aplicação. A operação 'CheckTextBody' verifica se há erros de ortografia na string e retorna os dados para serem processados pelo cliente. Você usará esta operação durante todo o tutorial.

Na janela Arquivos, no nó build, você deverá ver o seguinte:

Visualização Arquivos mostrando a estrutura de pacote do nó Construir

A janela Arquivos mostra os stubs do cliente que foram gerados pelo assistente de Cliente de serviço Web JAX-WS.

Desenvolvendo o cliente

Há muitas maneiras de implementar um cliente de serviço Web. O arquivo WSDL do serviço Web restringe o tipo de informação que pode ser enviada para o serviço Web e o tipo de informação que você deve esperar receber em troca. Entretanto, o arquivo WSDL não faz restrições sobre como você passa as informações necessárias nem sobre o que consiste a interface do usuário. A implementação do cliente que você construirá a seguir consiste em uma página JSP que permite que o usuário insira o texto a ser verificado e um servlet que passa o texto para o serviço Web e depois produz um relatório contendo o resultado.

Codificando a página JSP

Nossa página JSP simplesmente consistirá em uma área de texto, onde o usuário irá inserir um texto, e um botão para enviar o texto para o serviço Web.

  1. Na janela Projetos, expanda o nó Páginas da web e clique duas vezes em index.jsp para que ele seja aberto no Editor de código-fonte.
  2. Copie o seguinte código e cole-o sobre as marcas <body> no index.jsp:
    <body>
      <form name="Test" method="post" action="SpellCheckServlet">
         <p>Enter the text you want to check:</p>
         <p>
         <p><textarea rows="7" name="TextArea1" cols="40" ID="Textarea1"></textarea></p>
         <p>
         <input type="submit" value="Spell Check" name="spellcheckbutton">
      </form>
    </body>

    O código acima especifica que, ao se clicar no botão Submeter, o conteúdo de textarea é postado em um servlet chamado SpellCheckServlet.

Criando e codificando o servlet

Nesta seção, criaremos um servlet que irá interagir com o serviço Web. Entretanto, como veremos, o código que realiza a interação será fornecido pelo IDE. Como resultado, você só precisa lidar com a lógica comercial, ou seja, a preparação do texto a ser enviado e o processamento do resultado.

  1. Clique com o botão direito do mouse no nó do projeto na janela Projetos, escolha Novo > Outro e escolha Web > Servlet. Clique em Próximo. Nomeie o servlet como SpellCheckServlet e digite clientservlet na lista suspensa Pacote. Clique em Próximo. Observe que o mapeamento de URL deste servlet é /SpellCheckServlet, conforme mostrado abaixo:
    Exibir no navegador

    Clique em Terminar. O servlet se abrirá no Editor de código-fonte.

  2. Coloque o cursor dentro do Editor de código-fonte, dentro do método processRequest, adicione algumas linhas novas logo acima do método.
  3. Clique com o botão direito do mouse no espaço criado na etapa anterior e escolha Recursos do cliente de serviço Web > Chamar operação de serviço Web. Clique na operação CheckTextBody na caixa de diálogo "Selecionar operação para invocação", conforme mostrado abaixo:
    Caixa de diálogo Selecionar operação a ser chamada mostrando a operação CheckTextBody

    Clique em OK.

    Observação: você também pode arrastar e soltar o nó da operação diretamente da janela Projetos no editor, em vez de chamar a caixa de diálogo mostrada acima.

    Na parte superior do método processRequest, é exibido um fragmento de código que chama o serviço Web, conforme mostrado abaixo:

    try { // Call Web Service Operation
    com.cdyne.ws.CheckSoap port = service.getCheckSoap();
    // TODO initialize WS operation arguments here
    java.lang.String bodyText = "";
    java.lang.String licenseKey = "";
    // TODO process result here
    com.cdyne.ws.DocumentSummary result = port.checkTextBody(bodyText, licenseKey);
    System.out.println("Result = "+result);
    } catch (Exception ex) {
    // TODO handle custom exceptions here
    }

    Você só precisa trabalhar com este método para chamar a operação no serviço Web. Além disso, as linhas de código a seguir são declaradas na parte superior da classe:

    @WebServiceRef(wsdlLocation = "http://ws.cdyne.com/SpellChecker/check.asmx?WSDL")
    private Check service;
  4. Substitua o método processRequest inteiro pelo código a seguir. Os comentários alinhados no código explicam a finalidade de cada linha. Corrija as importações depois de colar o código (clique com o botão direito do mouse em qualquer local, o que abre um menu de contexto, e selecione Corrigir importações.)
    protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
    
        try {
    
            // Call Web Service Operation
            String TextArea1 = request.getParameter("TextArea1");
    
            com.cdyne.ws.CheckSoap port = service.getCheckSoap();
    
            // TODO initialize WS operation arguments here
            java.lang.String bodyText = TextArea1;
            java.lang.String licenseKey = "0";
    
            // TODO process result here
            com.cdyne.ws.DocumentSummary doc = port.checkTextBody(bodyText, licenseKey);
            String allcontent = doc.getBody();
    
            //From the retrieved document summary,
            //identify the number of wrongly spelled words:
            int no_of_mistakes = doc.getMisspelledWordCount();
    
            //From the retrieved document summary,
            //identify the array of wrongly spelled words:
            List allwrongwords = doc.getMisspelledWord();
    
            out.println("<html>");
            out.println("<head>");
    
            //Display the report's name as a title in the browser's titlebar:
            out.println("<title>Spell Checker Report</title>");
            out.println("</head>");
            out.println("<body>");
    
            //Display the report's name as a header within the body of the report:
            out.println("<h2><font color='red'>Spell Checker Report</font></h2>");
    
            //Display all the content (correct as well as incorrectly spelled) between quotation marks:
            out.println("<hr><b>Your text:</b> \"" + allcontent + "\"" + "<p>");
    
            //For every array of wrong words (one array per wrong word),
            //identify the wrong word, the number of suggestions, and
            //the array of suggestions. Then display the wrong word and the number of suggestions and
            //then, for the array of suggestions belonging to the current wrong word, display each
            //suggestion:
            for (int i = 0; i < allwrongwords.size(); i++) {
                String onewrongword = ((Words) allwrongwords.get(i)).getWord();
                int onewordsuggestioncount = ((Words) allwrongwords.get(i)).getSuggestionCount();
                List allsuggestions = ((Words) allwrongwords.get(i)).getSuggestions();
                out.println("<hr><p><b>Wrong word:</b><font color='red'> " + onewrongword + "</font>");
                out.println("<p><b>" + onewordsuggestioncount + " suggestions:</b><br>");
                for (int k = 0; k < allsuggestions.size(); k++) {
                    String onesuggestion = (String) allsuggestions.get(k);
                    out.println(onesuggestion);
                }
            }
    
            //Display a line after each array of wrong words:
            out.println("<hr>");
    
            //Summarize by providing the number of errors and display them:
            out.println("<font color='red'><b>Summary:</b> " + no_of_mistakes + " mistakes (");
            for (int i = 0; i < allwrongwords.size(); i++) {
                String onewrongword = ((Words) allwrongwords.get(i)).getWord();
                out.println(onewrongword);
            }
    
            out.println(").");
            out.println("</font>");
            out.println("</body>");
            out.println("</html>");
            out.close();
    
        } catch (Exception ex) {
            System.out.println("exception" + ex);
            out.println("exception" + ex);
        }
    
        out.println("</body>");
        out.println("</html>");
        out.close();
                    }

    Observe que não houve tratamento de erros no código acima. Consulte Aplicando o que você aprendeu para obter detalhes.

  5. Implantando o cliente

    O IDE utiliza um script de construção Ant para construir os módulos. O IDE gera o script de construção com base nas opções inseridas ao criar o projeto. Você pode ajustar estas opções na caixa de diálogo Propriedades do projeto do projeto (clique com o botão direito do mouse no nó do projeto na janela Projetos e escolha Propriedades).

    1. Clique com o botão direito do mouse no nó do projeto e escolha Executar. Após um tempo, a aplicação deverá ser implantada e exibirá a página JSP codificada na seção anterior.
    2. Insira um texto, parte dele escrito incorretamente:
      Página JSP com texto a ser verificado
    3. Clique em Verificar ortografia e veja o resultado:
      Relatório do verificador ortográfico mostrando erros

    Praticando o que você aprendeu

    Agora que você concluiu o seu primeiro cliente de serviço Web no IDE, é hora de aprimorar suas habilidades e melhorar a aplicação para tirar o melhor proveito dela. Veja a seguir duas tarefas sugeridas para começar.

    • Adicione código de tratamento de erro ao servlet.
    • Reescreva o cliente para que o usuário possa interagir com os dados retornados do serviço Web. Para obter inspiração, consulte a implementação do cliente no site da CDYNE. Ele tem esta aparência: Serviço de verificação ortográfica CDYNE


    Veja 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 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