Criando um serviço Web

Propaganda
Prática em Laboratório N.02
Criando um serviço Web via NetBeans
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.
1.
Escolha Arquivo > Novo projeto (Ctrl-Shift-N). Selecione aplicação Web na categoria Java.
2.
Nomeie o projeto CalculatorWSApplication e clique em Próximo.
3.
Selecione o servidor GlassFish V2 e clique em Finalizar.
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.
3.
Deixe selecionado Criar serviço Web do início.
4.
Clique em Finalizar. A janela Projetos exibe a estrutura do novo serviço Web e o código-fonte é
mostrado na área do editor.
Criando o 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.
Adicionando uma operação ao serviço Web
1.
Passe para visualização Desenho. (Observação: a Visualização prévia não está habilitada no NetBeans
6.5.1.)
2.
Clique em Adicionar operação no Visual Designer. Aparece uma caixa de diálogo onde você pode
definir a nova operação.
3.
Na parte superior da caixa de diálogo Adicionar operação, digite add em Nome e digite int no Tipo
de retorno. Na parte inferior da caixa de diálogo Adicionar operação, na aba Parâmetros, 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:
4.
Clique em OK na parte inferior da caixa de diálogo Adicionar operação. O Visual Designer agora
exibe o seguinte:
5.
Clique em Código-fonte e visualize o código que você gerou nas etapas anteriores. Você verá algo
semelhante a imagem abaixo.
6.
No editor, insira código na operação add da seguinte forma:
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 – porém antes salve seu
projeto.
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 de teste, fornecida pelo GlassFish, é integrada no IDE para
essa finalidade.
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 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 na aba GlassFish na janela Saída.
2.
Na aba Projetos do IDE, expanda o nó Serviços Web do projeto CalculatorWSApplication. Clique
com o botão direito do mouse no nó CalculatorWS 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.
Digite dois número – por exemplo, 2 e 3. A soma dos dois números é exibida:
Clique com o botão direito do mouse no nó do projeto, escolha Propriedades e clique em
Executar. Digite /CalculatorWSService?Tester no campo URL relativa.
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.
.
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.
Se estiver usando o JDK 6 com o NetBeans 6.5, você deve ter o JDK 6, atualização 7 ou posterior.
1.
Escolha Arquivo > Novo projeto (Ctrl-Shift-N). 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.
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.
Deixe as outras configurações com o padrão e clique em Finalizar.
A janela Projetos exibe o novo cliente de serviço Web, com um nó para o método add que você criou:
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.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);
System.out.println("Result = "+result);
} catch (Exception ex) {
// TODO handle custom exceptions here
}
}
Observação: como alternativa, em vez de arrastar o nó add, você pode clicar com o botão direito do
mouse no editor e escolher (na versão 6.7 e posteriores) Inserir código > Chamar operação de serviço
Web ou (na versão 6.5.1 e anteriores) Recursos do cliente de serviço Web > Chamar operação de
serviço Web.
6.
Inicialize os dois ints. Altere apenas os valores dos dois ints acima de 0 para outros inteiros, como 3 e
4.
7.
No bloco catch, substitua o TODO comentado por System.out.println("exception" + ex);.
8.
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.
Importante: se estiver usando o JDK 6, você deve ter o JDK 6, atualização 7 ou posterior.
1.
Escolha Arquivo > Novo projeto (Ctrl-Shift-N). Na categoria Java Web, selecione Aplicação Web.
Nomeie o projeto CalculatorWSServletClient. Clique em Próximo e, em seguida, em Finalizar.
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.
Deixe as outras configurações com o padrão e clique em Finalizar.
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:
5.
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 Finalizar.
6.
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.
7.
Se estiver usando o NetBeans IDE 6.5, será necessário desativar o recurso Implantar ao salvar. Abra
as propriedades de execução novamente e desmarque Implantar ao salvar.
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, 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):
Observação: o código adicionado é para o JDK 6. No JDK 5, o serviço também é instanciado
explicitamente. No JDK 6, o serviço é instanciado pela anotação @WebServiceRef.
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.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 os valores de i e j por inteiros positivos, como 3 e 4, e substitua a linha TODO comentada no
bloco catch por out.println("exception" + ex);.
Observação: como alternativa, em vez de arrastar o nó add, você pode clicar com o botão direito do
mouse no editor e escolher (na versão 6.7 e posteriores) Inserir código > Chamar operação de serviço
Web ou (na versão 6.5.1 e anteriores) Recursos do cliente de serviço Web > Chamar operação de
serviço Web.
10. 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:
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.
Se está usando o JDK 6, você deve ter o JDK 6, atualização 7 ou posterior.
1.
Escolha Arquivo > Novo projeto (Ctrl-Shift-N). Na categoria Java Web, selecione Aplicação Web.
Nomeie o projeto CalculatorWSJSPClient. Clique em Finalizar.
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.
Deixe as outras configurações com o padrão e clique em Finalizar.
A janela Projetos exibe o novo cliente de serviço Web, como mostrado abaixo:
5.
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.
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:
7.
<%
8.
try {
9.
10.
11.
12.
13.
org.me.calculator.CalculatorWSService service =
new org.me.calculator.CalculatorWSService();
org.me.calculator.CalculatorWS port =
service.getCalculatorWSPort();
// TODO initialize WS operation arguments here
14.
int i = 0;
15.
int j = 0;
16.
// TODO process result here
17.
int result = port.add(i, j);
18.
out.println("Result = "+result);
19.
} catch (Exception ex) {
20.
21.
// 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);.
22. 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:
Download