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.
Esta será a aparência do cliente, com todos os dados recebidos do serviço Web:
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.
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.
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:
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.
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.
No 6.1, selecione a versão de JAX JAX-WS (alguns serviços mais antigos requerem clientes JAX-RPC). Clique em Terminar.
Na janela Projetos, no nó Referências de serviços Web, você deverá ver o seguinte:
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:
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.
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.
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.
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:
Clique em Terminar. O servlet se abrirá no Editor de código-fonte.
Coloque o cursor dentro do Editor de código-fonte, dentro do método processRequest, adicione algumas linhas novas logo acima do método.
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:
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:
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.
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).
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.
Insira um texto, parte dele escrito incorretamente:
Clique em Verificar ortografia e veja o resultado:
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:
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 .