Академический Документы
Профессиональный Документы
Культура Документы
1 A
25
Captulo
distribuda em geral, quando pensamos na Internet. Em sua forma mais clssica, baseada em protocolo SOAP/XML, prover ou consumir servios pode requerer um grande esforo quando implementados manualmente, sem o apoio de um framework e gerador especializados. Para amenizar este problema, desde o incio do sculo que no faltam frameworks e geradores para WebServices. Produtos como o Apache Axis e inmeros outros produtos comerciais, porm, davam suas prprias sadas e modificaram o problema original para outro: falta de padro e at de compatibilidade entre as diversas solues, que introduziam extenses proprietrias aos seus produtos. Felizmente, para problemas como este que o padro Java EE foi criado. A partir da verso 2.0 da API JAX-WS, introduzida no Java EE 5, a simplicidade se concretizou (tanto quanto possvel). E esta simplicidade, aliada a um padro de mercado, tornaram o JAX-WS a melhor opo do mundo Java para se prover ou consumir servios Web via SOAP!
s Web-Services so uma tecnologia popular para apoiar iniciativas de B2B, SOA e computao
- SOAP x REST
No prximo captulo veremos uma soluo alternativa aos Web-Services "SOAP" abordados neste captulo, chamada RESTful Web-Services. Esta alternativa pode ser implementada tambm de forma padro, pela API JAX-RS - e tambm conta com frameworks de apoio produtividade. Na verdade, por ser de fato mais simples de se utilizar, dispensando a camada SOAP sobre o protocolo HTTP, o XML e outras exigncias de Web-Services tradicionais, os RESTful Web-Services j so inclusive mais populares na Internet. H quem diga inclusive que eles iro sepultar os Web-Services, mas h tambm quem aponte vantagens nicas do padro JAX-WS. Possivelmente, neste momento e por algum tempo, o desenvolvedor ter que dominar ambos: muitos servios pblicos so expostos em somente uma destas modalidades e ainda h nicho significativo para ambos. Por este motivo, e como este assunto vasto, deixaremos esta polmica fora de nosso escopo, trabalhando com os dois padres. Do ponto de vista estritamente tcnico, o prprio desenvolvedor poder tirar suas prprias concluses aps as prticas deste e do prximo captulo.
Importante: Podemos utilizar EJB 3.x no jCompany, sem problemas, utilizando o jBoss AS, por exemplo, mas como todo o tutorial do livro se baseou no Tomcat, manteremos esta linha.
#1. Anotao "@WebService" indica que a classe "BuscaFuncionarioWS" um servio web (WS). #2. Anotao "@WebMethod" indica que esse mtodo ser exposto no WS. #3. Anotao "@WebParam" serve para informar o nome do parmetro do WS. #4. Nesse ponto, pedimos a nossa fachada para recuperar o funcionrio baseado no nosso CPF. No vamos entrar em detalhe na implementao da camada de modelo para no fugir do nosso foco principal.
Captulo G22
- Configurando dependncias no projeto para gerao dos artefatos de suporte a Web-Services JAXWS (somente Tomcat)
1. Adicione as dependncias do JAX-WS no arquivo "pom.xml" do projeto onde ser implementado o WS.
2.
Adicione o plugin para gerao dos Stubs em tempo de empacotamento. A documentao detalhada do plugin se encontra em: https://jax-ws-commons.dev.java.net/jaxws-maven-plugin/. Vamos adicionar configuraes de profile no arquivo "pom.xml".
#1. Esta URL indica para o arquivo "pom.xml" o uso da classe de servio do WS.
- Configurando o JAX-WS.
Para configurar o JAX-WS, vamos seguir os passos abaixo: 1. Crie o arquivo "sun-jaxws.xml" dentro da pasta WEB-INF do projeto, informando os WEB-SERVICES criados.
2.
Mapeie a aplicao para responder ao servio. Essa configurao dever ser feita no arquivo "web.xml".
Captulo G22
3.
Verifique a disponibilidade do servio pelo browser atravs da URL: http://localhost:8080/rhtutorial/busca. O servio pode ser visto na Figura G25.8.
- Configurando dependncias no projeto para gerao dos artefatos de suporte ao JAX-WS (somente Tomcat)
Para estabelecer o servio de consumo, ns devemos seguir a demanda abaixo para configurar o JAX-WS como uma dependncia da classe provedora *. 1. Adicione o plugin para gerao dos Stubs em tempo de empacotamento. A documentao detalhada do plugin se encontra em: https://jax-ws-commons.dev.java.net/jaxws-maven-plugin/. Vamos adicionar configuraes de profile no arquivo "pom.xml"
Por motivos didticos, neste livro a classe provedora e consumidora pertencem ao mesmo projeto. No mundo real isso muito dificilmente ir acontecer, uma vez que o objetivo de uso dos WS a transmisso de dados entre aplicaes. No contexto de aplicaes diferentes para o uso do WS a classe consumidora precisaria tambm das dependncias do jCompany Service em seu arquivo "pom.xml".
2.
#1. Este trecho no tem muitas novidades quanto ao descrito anteriormente, a diferena a tag "goals" que neste caso indica que os artefatos importados pertencem classe provedora. 3. Execute o comando maven "install" com o parmetro "-Dwebservice=S" para gerar os artefatos. Se preferir execute o script de deploy que configuramos na Figura G25.7. Aps rodar o script, sero gerados os artefatos para consumo com os mesmos pacotes da aplicao do servio. Veja Figura G25.10.
Captulo G22
Importante: Lembrando que para gerao dos artefatos no consumidor, ao executar o script de deploy, a aplicao provedora do servio deve estar executando.
2.
Crie o arquivo "buscafuncionarioCtl.xhtml" dentro da pasta ".../WEB-INF/fcls/buscafuncionario/". Esse arquivo ser utilizado para entrada e exibio dos dados.
Figura G25.12. Arquivo xhtml para entrada e exibio dos dados da classe de controle para consumir o servio.
#1. Tag que cria o campo para o usurio informar o "CPF". #2. Lgica para mostrar o retorno da pesquisa. Se o funcionrio for retornado, seus dados so mostrados, caso contrrio a mensagem "Funcionrio no encontrado!" exibida. 3. Crie o arquivo "package-info.java" da classe de consumo informando o caminho para o XHTML de configurao da tela. A Figura G25.1 mostra o arquivo pronto.
Figura G25.13. Arquivo "package-info.java" com configuraes para utilizao de um caso de uso "Controle Simples".
4.
Crie um menu para acessar o nossa classe provedora. Para isso adicione o cdigo da Figura G25.14 no arquivo "geralMenu.xhtml" da aplicao.
Captulo G22
Figura G25.15. Tela com o acesso ao servio de busca de funcionrio por CPF.
Sumrio
Neste captulo discutimos brevemente sobre Web-Services tradicionais, baseados em SOAP sob o protocolo HTTP e uso de XML/WSDL. Criamos um primeiro servio para recuperar os dados principais de um funcionrio a partir de seu CPF. Em seguida, implementamos um exemplo do lado "consumidor", utilizando em ambos os casos o padro JAX-WS sobre o Tomcat. No prximo captulo, iremos explorar a alternativa RESTful Web-Services, baseada no padro JAX-RS, para viabilizar uma comparao entre os dois modelos, alm de conhecer generalidades do jCompany nesta rea, atravs do jCompany Service.