// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= Interoperabilidade Avançada do Web Service
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Interoperabilidade Avançada do Web Service - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Interoperabilidade Avançada do Web Service

A Interoperabilidade Avançada do Web Service (WSIT), também conhecida como “Qualidade de Serviço” do Web Service, abrange os componentes que ativam a interoperabilidade entre os Web services Java e os Web services .Net. Este documento demonstra o suporte no IDE para configurar um web service e um cliente que usa WSIT. Para obter mais informações sobre como usar WSIT, consulte o link:http://docs.oracle.com/cd/E19159-01/820-1072/ahibn/index.html[+Capítulo 3 Exemplo de WSIT Usando um Contêiner Web e NetBeans IDE+] em link:http://docs.oracle.com/cd/E19159-01/820-1072/index.html[+O Tutorial do WSIT+]


image::images/netbeans-stamp-74-73-72.png[title="O conteúdo desta página se aplica ao NetBeans IDE 7.2, 7.3 e 7.4"]


*Para seguir este tutorial, são necessários os recursos e o software a seguir.*

|===
|Software ou Recurso |Versão Necessária 

|link:https://netbeans.org/downloads/index.html[+NetBeans IDE+] |Pacote de download do Java EE 

|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+JDK (Java Development Kit)+] |versão 6 ou versão 7 

|Servidor de aplicações ou Web compatível com Java EE |GlassFish Server Open Source Edition 3.1.x, 4.x
ou 
link:http://www.oracle.com/technetwork/middleware/weblogic/overview/index.html[+Oracle WebLogic Server+] 11g ou 12c 
|===

O GlassFish Server pode ser instalado com a distribuição Web e Java EE do NetBeans IDE. Como alternativa, você pode visitar a link:https://glassfish.java.net/download.html[+página de downloads do GlassFish Server+] ou a link:http://tomcat.apache.org/download-60.cgi[+página de downloads do Apache Tomcat+].

*Importante: *os projetos Java EE requerem GlassFish Server 3.1.x, 4.x ou Oracle WebLogic Server 12c.


== Introdução

Os componentes relacionados à interoperabilidade avançada de Web services entram em quatro categorias principais:

* *Bootstrapping e configuração.* O processo que é executado para criar um cliente de Web service que pode acessar e consumir um Web service.
* *Segurança da mensagem* As opções de configuração de segurança a seguir são suportadas:
* Destinos para opções de autenticação e criptografia
* Segurança de Web services do Cliente/serviço
* Opções de confiança do cliente/serviço
* Opções avançadas de configuração
* Opções de configuração de armazenamento de chaves
* *Otimização da mensagem.* Garante que as mensagens de Web services sejam transmitidas pela Internet da maneira mais eficiente. A otimização de mensagens é alcançada na comunicação dos Web services codificando as mensagens antes da sua transmissão e decodificando-as quando elas alcançam seu destino final.
* *Mensagem confiável.* Medido pela capacidade do sistema de distribuir mensagens do ponto A para o ponto B sem erros.

A “Qualidade de serviço” é configurada no Editor de Atributos do Web Service, que pode ser acessado na janela Projetos, no nó que representa o Web service ou o cliente. Este documento apresentará duas amostras que são distribuídas com o IDE: uma amostra de web service e uma amostra de web service seguro. Este documento mostrará algumas diferenças entre as amostras e também como usar o IDE para configurar a segurança para seus próprios web services e clientes.

Para obter um guia completo e abrangente sobre os tópicos relacionados à “Qualidade de Serviço”, consulte link:http://download.oracle.com/docs/cd/E17802_01/webservices/webservices/reference/tutorials/wsit/doc/index.html[+O tutorial do WSIT+].  


== Conhecendo a amostra de calculadora

O objetivo deste exercício é conhecer a amostra de Calculadora que está incorporada no IDE. Em contraste com o próximo exemplo, este exemplo não é seguro, como poderá ser visto ao examinar o Web service.


=== Explorando a Amostra

Neste exercício você usará o assistente Novo Projeto para criar a amostra, examinará a amostra no IDE e implantará a aplicação.

1. Escolha Arquivos > Novo Projeto (Ctrl-Shift-N no Linux e no Windows, ⌘-Shift-N no MacOS) para abrir o assistente Novo Projeto.
2. Expanda a categoria Amostras e selecione o nó Web Services e, em seguida, selecione a amostra Calculadora. Clique em Próximo.
image::images/wsit-newproject.png[title="Assistente Novo Projeto que mostra a amostra da calculadora"]

[start=3]
. Confirme se um servidor compatível com Java EE está selecionado na lista drop-down Servidor. Clique em Finalizar.

Quando clicar em Finalizar o assistente criará dois projetos:

* *CalculatorApp* fornece um Web service chamado CalculatorWS que expõe uma operação de nome “add”.
* *CalculatorClientApp* fornece um cliente, de nome CalculatorWSService, que invoca a operação “add” do Web service.

O serviço CalculatorClientApp pode ser marcado com um ícone de erro porque o IDE não pode localizar o WSDL para o serviço CalculatorWS. O erro será resolvido depois que você implantar CalculatorApp e limpar e construir o CalculatorClientApp.

image::images/wsit-projects.png[title="Janela Projetos que exibe o Web service e o cliente"]

[start=4]
. Clique duas vezes no web service CalculatorWS para abrir o arquivo no editor e clique na guia Design na parte superior do editor para exibir o web service no designer visual.
image::images/wsit-design.png[title="Serviço CalculatorWS noa guia Design GUI (Visual Designer)"]

*Observação:* na seção Qualidade de Serviço na guia design do serviço você pode ver que _nenhuma_ opção está ativada. Como resultado, os componentes da Qualidade de Serviço não foram aplicados a esse Web service em questão. Você verá um web service no qual um componente da Qualidade de Serviço _é_ ativado quando você criar o web service protegido.

Para obter um tutorial completo sobre Web services no IDE, consulte link:jax-ws.html[+Introdução aos Web services JAX-WS+].


=== Implantando e Testando o Exemplo de Calculadora

1. Clique com o botão direito do mouse no projeto CalculatorApp e selecione Executar.

O servidor é iniciado e o web service é implantado no servidor. Você verá uma página aberta em seu browser default que fornece alguns detalhes do serviço.

image::images/wsit-browser1.png[title="Janela de informações do CalculatorWS no browser"]

[start=2]
. Clique no link WSDL na página do browser para ver o arquivo WSDL que define o web service. 
image::images/wsit-browser2.png[title="WSDL do Calculator WS no browser"]

*Observação.* Se o WSDL não for exibido, verifique o URL na barra de localização do browser. Ele deverá apontar para  ``http://localhost:_seu_número_de_porta_/CalculatorApp/CalculatorWSService?WSDL`` .


[start=3]
. Na janela Projetos do IDE, clique com o botão direito do mouse em CalculatorWS no nó do Web Services e escolha Testar Web Service no menu pop-up.

Quando você testa o web service, uma página para testar o serviço é aberta em seu browser.

image::images/wsit-browser3.png[title="Calculator WS Tester no browser"]

O IDE pode fornecer um cliente para testar seu web service e abrir a aplicação de teste em seu browser. Na aplicação de teste é possível inserir os valores para cada campo definido no Web service. A aplicação de teste tem um botão é identificado depois do nome da operação no serviço. Quando clicar no botão você verá o resultado da chamada da operação.


[start=4]
. Examine o projeto CalculatorClientApp na janela Projetos para obter emblemas de erros.

Se houver ícones de erro para  ``ClientServlet.java`` , clique com o botão direito no nó do projeto e escolha Limpar e Construir no menu pop-up. Os erros surgiram porque o serviço CalculatorWS não foi implantado. Agora que ele está implantado, o IDE pode fazer parsing de seu WSDL e a compilação do ClientServlet.


[start=5]
. Clique com o botão direito do mouse no nó do projeto CalculatorClientApp e selecione Executar.

Ao executar a aplicação, uma interface do serviço será aberta em seu browser.

image::images/wsit-browser4.png[title="Cliente do Serviço da Calculadora no browser"]

[start=6]
. Informe os valores nos dois campos e clique em Obter Resultado.

Ao clicar em Obter Resultado, o resultado da operação será recuperado no web service e exibido no cliente.

O web service está funcionando corretamente e o cliente recupera os resultados, mas este projeto não usar os componentes da Qualidade de Serviço. Na próxima seção, você verá como pode configurar os componentes da Qualidade de Serviço.


==   Conhecendo o Exemplo de Calculadora Segura

O objetivo deste exercício é examinar como um Web service seguro é configurado, e como um cliente interage com ele.


=== Explorando a Amostra

Neste exercício você usa o assistente Novo Projeto para criar a amostra e, em seguida, examinará como a Qualidade de Serviço é configurada para a aplicação.

1. Escolha Arquivos > Novo Projeto (Ctrl-Shift-N no Linux e no Windows, ⌘-Shift-N no MacOS) para abrir o assistente Novo Projeto.
2. Expanda a categoria Amostras e selecione o nó Web Services e, em seguida, selecione a amostra Calculadora Segura. Clique em Próximo.
3. Confirme se um servidor compatível com Java EE está selecionado na lista drop-down Servidor. Clique em Finalizar.

Quando clicar em Finalizar o assistente criará dois projetos:

* *SecureCalculatorApp* fornece um Web service chamado CalculatorWS que expõe uma operação de nome “add”.
* *SecureCalculatorClientApp* fornece um cliente, de nome CalculatorWSService, que invoca a operação “add” do Web service.

O serviço SecureCalculatorClientApp pode ser marcado com um ícone de erro porque o IDE não pode localizar o WSDL para o serviço CalculatorWS. O erro será resolvido depois que você implantar SecureCalculatorApp e limpar e construir o SecureCalculatorClientApp.


[start=4]
. Clique duas vezes no web service CalculatorWS na pasta Web Services de SecureCalculatorApp para abrir o arquivo no editor e clique na guia Design na parte superior do editor para exibir o web service no designer visual.

*Observação:* Na seção Qualidade de Serviço na view design do serviço você pode ver que a opção Serviço Seguro está selecionada e que as outras duas opções não foram selecionadas. A seção Qualidade de Serviço no Visual Designer especifica quais componentes da Qualidade de Serviço estão _ativados_ para o Web service atual.


[start=5]
. Clique em Editar Atributos do Web Service para abrir o Editor de Atributos do Web Service.
image::images/wsit-quality-dialog.png[title="Página Qualidade de Serviço no Editor de Atributos do WS"]

Na guia Qualidade de Serviço você pode ver que uma opção de Compatibilidade de Versão foi selecionada. Selecione a versão mais recente que corresponda à versão do Metro ou do .NET que você tem instalada.

Para ativar a lista drop-down de compatibilidade da versão, adicione a versão mais recente do Metro no classpath do projeto. Para adicionar a biblioteca mais recente do Metro, clique com o botão direito do mouse no nó do projeto na janela Projetos, abra as Propriedades do projeto, vá até a categoria Bibliotecas e procure e adicione a versão mais recente da biblioteca do Metro.

Observe que a opção Serviço Seguro é selecionada e que um mecanismo de segurança é selecionado na lista drop-down. O mecanismo de segurança especifica a abordagem usada para proteger o web service.

Nesta aplicação de amostra a Autenticação de Nome de Usuário com o mecanismo de segurança Chaves Simétrica é selecionada. Para obter uma descrição das opções e propriedades do mecanismo de segurança Autenticação do Nome de Usuário com Chaves Simétricas, consulte link:http://docs.oracle.com/cd/E19182-01/821-0015/gggsrv/index.html[+Autenticação do Nome de Usuário com Chaves Simétricas+]. Para obte uma descrição de outros mecanismos de segurança disponíveis. consulte link:http://docs.oracle.com/cd/E19182-01/820-0595/6ncatc2q5/index.html[+Configurando Mecanismos de Segurança+].


[start=6]
. Expanda as seções Mensagem de Entrada e Mensagem de Saída na guia Qualidade de Serviço.
image::images/wsit-quality-dialog2.png[title="Página Qualidade de Serviço com o botão Partes da Mensagem ativado"]

O botão Partes da Mensagem é ativado para Mensagem de Entrada e Mensagem de Saída se você selecionar Autenticação do Nome de Usuário com Chaves Simétricas como o mecanismo de segurança.

*Observação:* a lista drop-down Token de Autenticação e as opções de Mensagem de Entrada não são ativadas para o mecanismo de segurança Autenticação de Nome de Usuário com Chaves Simétricas.


[start=7]
. Clique no botão Partes da Mensagem na seção Mensagem de Entrada.
image::images/wsit-messageparts.png[title="Caixa de diálogo Partes da Mensagem"]

Na caixa de diálogo Partes da Mensagem você pode ver as opções de segurança de diferentes elementos. Você pode marcar uma caixa de seleção para ativar ou desativar as partes que devem ser assinadas, criptografadas e obrigatórias. Para cada elemento você pode especificar as seguintes opções:

* Selecione *Assinar* para especificar as partes ou os elementos de uma mensagem que requerem a proteção de integridade (assinatura digital).
* Selecione *Criptografar* para especificar as partes ou os elementos de uma mensagem que requerem confidencialidade (criptografia).
* Selecione *Exigir* para especificar um conjunto de partes e/ou elementos que uma mensagem deve conter.

Em seguida, verifique como a qualidade de serviço do cliente do Web service é configurada.


[start=8]
. Na janeja Projetos, expanda o nó Referências de Web Service no projeto *SecureCalculatorClientApp*.

[start=9]
. Clique com o botão direito do mouse no nó CalculatorWSService e escolha Editar Atributos do Web Service no menu pop-up para abrir a caixa de diálogo Atributos do Web Service. 
image::images/wsit-qos-wsservice.png[title="Caixa de diálogo de qualidade de serviço do cliente do Web service"]

Você pode ver que um usuário "wsitUser" e senha default existem. O usuário e a senha default foram criados no realm "arquivo".

Se você selecionar a opção Usar Defaults de Desenvolvimento na seção Segurança, o IDE importa certificados para o armazenamento de chaves e o truststore do GlassFish Server para que eles possam ser usados imediatamente para desenvolvimento.

*Importante: * Em um ambiente de produção, você provavelmente desejará fornecer seus próprios certificados e definições de usuário. Entretanto, em um ambiente de desenvolvimento, você poderá considerar esses defaults úteis.

Para obter uma descrição detalhada de como configurar a segurança para um cliente de web service, consulte o link:http://docs.oracle.com/cd/E19159-01/820-1072/6ncp48v3b/index.html[+Capítulo 7 Usando a Segurança de WSIT+] em link:http://docs.oracle.com/cd/E19159-01/820-1072/index.html[+O Tutorial de WSIT+].


=== Implantando e Testando o Exemplo de Calculadora Segura

1. Clique com o botão direito do mouse no nó do projeto de serviço e escolha Executar para implantar o web service.
2. Clique com o botão direito do mouse no nó do projeto do cliente do Web service e selecione Executar.

Quando executar o cliente, a aplicação é implantada e a interface do serviço é aberta no browser.

image::images/wsit-browser-secure1.png[title="Cliente de Web service segudo no browser"]

[start=3]
. Digite um número em cada um dos campos e clique em Obter Resultado.

Ao clicar em Obter Resultado, a página exibirá uma mensagem informando que o cliente foi autenticado e exibirá o resultado da operação.

image::images/wsit-browser-secure2.png[title="Cliente de Web service segurno no browser mostrando resultados"]

Se uma mensagem de erro aparecer constatando que a autenticação falhou devido a um par usuário/senha inválido, ou existe um problema com o usuário default criado pelo IDE, ou existem credenciais não correspondentes definidas no cliente. Nesse caso, é necessário criar um par usuário/senha manualmente. Para obter instruções, consulte link:http://docs.oracle.com/cd/E19159-01/820-1072/6ncp48v3b/index.html[+Capítulo 7 Usando Segurança de WSIT+] em link:http://docs.oracle.com/cd/E19159-01/820-1072/index.html[+O Tutorial de WSIT+].

link:/about/contact_form.html?to=3&subject=Feedback:WSIT%20Advanced%20Interoperability%20in%20NetBeans%20IDE%206.0[+Enviar Feedback neste Tutorial+]



== Consulte Também

Para obter mais informações sobre como usar o NetBeans IDE para desenvolver Web Services, consulte os seguintes recursos:

* link:client.html[+Desenvolvendo Clientes de Web Service JAX-WS+]
* link:jax-ws.html[+Introdução aos Web Services JAX-WS+]
* link:rest.html[+Introdução ao RESTful Web Services+]
* link:flower_overview.html[+Aplicação de Web service passando dados binários+]
* link:../../74/websvc/jaxb_pt_BR.html[+Vinculando WSDL a Java com JAXB+]
* link:../../trails/web.html[+Trilha do Aprendizado de Web services+]

Para enviar comentários e sugestões, obter suporte e se manter informado sobre os mais recentes desenvolvimentos das funcionalidades de desenvolvimento Java EE do NetBeans IDE, link:../../../community/lists/top.html[+inscreva-se na lista de notícias nbj2ee@netbeans.org+].

