Colaboração e manutenção de Geertjan Wielenga, Manisha Umbarje, Martin Grebac, Milan Kuchtiak e Radko Najman
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:
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:
Na janela principal, escolha Ferramentas > Gerenciador de servidores.
Clique em Adicionar servidor. Selecione o servidor de aplicativos Sun Java System e dê um nome à instância. Em seguida clique em Próximo.
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.
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.
Escolha Arquivo > Novo projeto (Ctrl-Shift-N). Selecione Aplicativo da Web na categoria Web ou Módulo EJB na categoria Empresa.
Nomeie o projeto CalculatorWSApplication.
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.
Clique em Finalizar.
Criando um serviço da Web a partir de uma classe Java
Clique com o botão direito do mouse no nó CalculatorWSApplication e escolha Novo > Serviço da Web.
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:
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
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.
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.
Na parte superior da caixa de diálogo Adicionar operação, digite add em Nome e selecione 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 do tipo int nomeado i. Clique em OK.
Clique em Adicionar novamente e crie um parâmetro do tipo int chamado j.
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;
}
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:
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.
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:
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 soma dos dois números é exibida:
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
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.
Clique com o botão direito do mouse no nó CalculatorWS_Client_Application e escolha Novo > Cliente do serviço da Web.
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.
Digite org.me.calculator.client em Pacote e clique em Finalizar.
A janela Projetos exibe o novo cliente do serviço da Web:
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.
Navegue até a operação Adicionar e clique em OK.
Altere a linha que está sublinhada em vermelho para o seguinte:
System.out.println("Sum: " + port.add(3,4));
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
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.
Clique com o botão direito do mouse no nó CalculatorWSServletClient e escolha Novo > Cliente de serviço da Web.
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.
Digite org.me.calculator.client em Pacote e clique em Finalizar.
A janela Projetos exibe o novo cliente do serviço da Web:
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.
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.
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);
}
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
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.
Clique com o botão direito do mouse no nó CalculatorWSJSPClient e escolha Novo > Cliente de serviço da Web.
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.
Digite org.me.calculator.client em Pacote e clique em Finalizar.
A janela Projetos exibe o novo cliente do serviço da Web.
Na pasta Páginas da Web, clique duas vezes em index.jsp para que seja aberto no Editor de fontes.
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.
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.
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:
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 .