Esse artigo faz parte da revista Java Magazine edição 63. Clique aqui para ler todos os artigos desta edição

AN style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: red; FONT-FAMILY: Verdana; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">

PAN>

XT-ALIGN: left" align=left> 

Em que situação o tema é útil:

SOA é realidade em hoje diversas empresas, porém estas empresas têm diariamente de lidar com decisões sobre quando e como encapsular chamadas a serviços existentes para compor uma nova funcionalidade que agrega valor ao negócio.

 

SOA na prática – Parte 2:

Utilizando um barramento corporativo (ALSB), podemos criar interfaces de negócio para serviços existentes, garantindo assim a abstração e o desacoplamento. Porém, isso só é possível graças a transformações XQuery, WSDL e XSD bem definidos e o uso das funcionalidades básicas de um ESB: validar, enriquecer, transformar e orquestrar mensagens. Neste artigo tudo isso é apresentado de maneira prática, mostrando quais os conceitos e a lógica para a realização desta abstração e composição de serviços. Aproveitamos um serviço já criado na parte 1 de nosso artigo (Conversão Monetária) e aproveitamos agora para criar um novo serviço que busca produtos no site Amazon, converte seu valor em dólar para Real e ainda transforma o resultado do serviço para um modelo mais orientado ao negócio.

 

Na Edição 62 da Java Magazine, exploramos conceitos teóricos e práticos envolvendo SOA. Naquele artigo, você teve acesso a um tutorial passo-a-passo para utilizar a ferramenta AquaLogic Service Bus, com foco em conhecer o que um barramento de serviços de mercado tem a oferecer e como utilizá-lo.

Veremos nessa edição uma orquestração mais complexa, com uma abordagem menos tutorial para que seja possível apresentar mais detalhes da ferramenta, pois julgamos que o tutorial apresentado na primeira parte do artigo já ambientou você, leitor, com diversos conceitos de uma arquitetura SOA e do ALSB. Além de que, os itens apresentados aqui, em caso de dúvidas, podem ser facilmente consultados na documentação do produto.

Entendendo o novo exemplo

O novo exemplo que criamos é um serviço capaz realizar uma consulta na Amazon através dos web services disponibilizados pelo serviço denominado AWS (Amazon Web Services).

O serviço que criaremos, além de obter uma lista de produtos a partir de uma ou várias palavras-chave, efetua uma consulta ao serviço de cotação monetária (que criamos na edição anterior) e converte o preço do produto para Real. Além da cotação, os dados são convertidos para um esquema XML que criamos que define um produto para nosso exemplo, independentemente do padrão retornado pelo serviço, desacoplando o cliente do provedor do serviço.

Importando o exemplo

Para que você acompanhe o exemplo, é necessário obter o arquivo dessa edição, disponibilizado no site da revista. Para efetuar a importação da configuração, efetue o login no sbconsole (http://localhost:7001/sbconsole). No Change Center, clique em Create para iniciar uma sessão. Clique no menu System Administration e em Import Resources. Localize o JAR sbconfig.jar disponibilizado dentro do arquivo que você obteve no site da Java Magazine. Clique em Next e posteriormente em Import.

Ao visualizar a mensagem indicando sucesso na operação (“The import was completed successfully”), clique em Activate para ativar a sessão.

Analisando o exemplo

Após o arquivo de configuração importado, expanda o projeto JM na aba Project Explorer. Você verá que foi criada uma nova pasta denominada Produto, conforme a Figura 1. Clique em Produto.

 

Figura 1. Informações do projeto com os artefatos do novo serviço ‘Produto’.

Na listagem dos artefatos disponíveis, temos dois serviços: AWSECommerceService, que é um business service e Produto, que é um proxy service.

Clicando no serviço AWSECommerceService (Figura 2), temos acesso à sua configuração. Vemos na seção General Configuration que o tipo do serviço é caracterizado como um web service baseado em WSDL.

A configuração de transporte mostra que o transporte é http e exibe, entre outras informações, como a URL do serviço sendo http://soap.amazon.com/onca/soap?Service=AWSECommerceService.

 

Figura 2. Configurações do serviço AWSECommerceService.

Esse serviço, exposto e disponibilizado pela Amazon, possui uma série de operações. Utilizamos em nosso exemplo duas delas:

·          ItemSearch: operação responsável pela consulta de itens a partir de uma série de parâmetros. Usamos o parâmetro que representa as palavras-chave contidas no produto em nosso exemplo;

·          ItemLookup: operação responsável pela consulta dos detalhes de um item a partir de seu identificador. No exemplo enviaremos, além do identificador, um elemento que indica o que queremos receber como resposta.

 

Figura 3. Teste da operação ItemSearch do business service AWSECommerceService.

Para testar as operações que iremos usar e garantir que elas estão realmente funcionando, clique no ícone Launch Test Console e você será redirecionado para a tela do console de testes. Altere a operação para a operação ItemSearch. Sua tela deverá ficar similar à Figura 3.

Altere o código XML da seção Payload para código similar à Listagem 1. Repare que existe um elemento denominado AWSAccessKeyId cujo conteúdo deve ser alterado para a chave obtida através de um cadastro junto à Amazon. Essa chave é necessária para que seja possível realizar o acesso aos serviços providos. Veja o quadro “Obtendo uma chave de acesso junto à Amazon” para mais informações sobre como se cadastrar e obter uma chave de acesso. Após alterar o código, clique em Execute para executar o teste. Após execução, é exibido um XML similar ao apresentado na Listagem 2 contendo informações básicas sobre os itens que pesquisamos. A parte destacada em negrito na Listagem 2 contém informação sobre o primeiro item que foi resultado da pesquisa. É a partir desses itens que extrairemos as informações para utilizarmos em nosso serviço.

 

Listagem 1. XML para testes da operação ItemSearch.

<ns:ItemSearch xmlns:ns="http://webservices.amazon.com/AWSECommerceService/2008-03-03">

   <ns:AWSAccessKeyId>*** SUA CHAVE DE ACESSO AQUI ***</ns:AWSAccessKeyId>

  <ns:Request>

      <ns:Keywords>iPod</ns:Keywords>

      <ns:SearchIndex>All</ns:SearchIndex>

  </ns:Request>

</ns:ItemSearch>

 

 

Listagem 2. XML com o resultado dos testes da operação ItemSearch.

<SOAP-ENV:Envelope  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

 <SOAP-ENV:Body>

   <ItemSearchResponse  xmlns="http://webservices.amazon.com/AWSECommerceService/2008-03-03">

   <OperationRequest>

    . . .

   </OperationRequest>

   <Items>

    <Request>

      . . .

    </Request>

    <TotalResults>58179</TotalResults>

    <TotalPages>5818</TotalPages>

    <Item>

       <ASIN>B000JLKIHA</ASIN>

       <DetailPageURL>

        http://www.amazon.com/Apple-iPod-classic-Black-Generation/dp/B000JLKIHA%

3FSubscriptionId%3D19ESDSNAV2SDAF8AQCR2%26tag%3Dws%26linkCode%3Dsp1%

26camp%3D2025%26creative%3D165953%26creativeASIN%3DB000JLKIHA

       </DetailPageURL>

       <ItemAttributes>

        <Manufacturer>Apple Computer</Manufacturer>

        <ProductGroup>CE</ProductGroup>

       <Title>

        Apple iPod classic 80 GB Black (6th Generation)

       </Title>

       </ItemAttributes>

     </Item>

 

   outros elementos Item aqui...

   

...

Quer ler esse conteúdo completo? Tenha acesso completo