Escolar Documentos
Profissional Documentos
Cultura Documentos
Pesquisar
Home Entenda o site Revistas Tecnologias Cursos Loja Virtual Frum Servios Publicar A ssine Compre Crditos
Seja bem-vindo, CA RLOS A LBERTO DA COSTA RA MOS! Fale conosco Meus Servios
2 Curtir 8 0 0
comentrios
Tipo: Tutorial
Ser apresentada cada uma das ferramentas empregadas (Mule, JBoss, Active MQ e
MySQL) e o seu papel na implantao do SOA. Definiremos ainda a estrutura do
Barramento de Servios e realizaremos a construo dos fluxos de mensagens de
www.devmedia.com.br/orientacao-a-soa-parte-2-revista-java-magazine-111/26811 1/19
10/01/13 Orientao a SOA Parte 2 - Revista Java Magazine 111
cada uma das partes da arquitetura deste barramento. Por fim, testaremos a
soluo implantando e executando um servio de exemplo.
Na primeira parte deste artigo vimos a teoria que define o que este estilo de
arquitetura orientada a servio. H muito mais relao com a mudana na forma de agir
e de pensar, do que somente a aplicao de novas ferramentas e tecnologias, para
atingir os benefcios fundamentados pelo SOA. Na segunda parte do artigo, iremos
conhecer na prtica as categorias de ferramentas e formas de ao que desempenham
um papel de fundao e de apoio implantao deste paradigma de arquitetura.
Claramente isto demonstra um ambiente formado por ilhas isoladas, que esto
divididas em domnios estabelecidos pelas funes desempenhadas por cada sistema
da empresa. Este um tpico sintoma: as pessoas tanto de TI como de negcio falam
uma lngua composta de nomes de sistemas, siglas, codinomes e outros termos no
associados ao processo de negcio da empresa, o qual ela realiza para gerar lucro.
www.devmedia.com.br/orientacao-a-soa-parte-2-revista-java-magazine-111/26811 2/19
10/01/13 Orientao a SOA Parte 2 - Revista Java Magazine 111
cheio de siglas, o estado atual da empresa Arkham Company. Esta uma empresa
fictcia de porte mdio que, como tantas, busca automatizar seus processos de
negcio usufruindo da tecnologia. Por isso, durante todos esses anos de sua
existncia, muitos sistemas, ferramentas e integraes foram arduamente adquiridos e
implantados.
A empresa Arkham Company tem por objetivo promover um acoplamento mais baixo
entre as reas de negcio e tecnologia, possibilitando agilidade e flexibilidade aos
negcios para compor seus processos.
www.devmedia.com.br/orientacao-a-soa-parte-2-revista-java-magazine-111/26811 3/19
10/01/13 Orientao a SOA Parte 2 - Revista Java Magazine 111
Figura 1. Identificao dos servios expostos pelos sistemas da empresa.
O Provedor de Servio
Com base na tarefa realizada de identificao dos servios teis e necessrios
automatizao dos processos de negcio da Arkham Company, temos tambm
identificados quem so, e quais so, os sistemas provedores de servios (Figura 1).
Como provedor de uma das funes teis nos processos de negcio da empresa,
iremos selecionar este sistema como provedor do servio: Obter Endereos do Cliente.
Portanto, o SCI ir prover um servio que tem a funo de fornecer uma lista dos
endereos cadastrados para um cliente consultado por CPF.
Listagem 1. Web service exposto pelo sistema SCI para obteno de endereos.
package br.ujr.soa.sistema.informacoes.servicos;
import java
import br.ujr.soa.sistema.informacoes.business.
SistemaCentralInformacoesFacade;
import br.ujr.soa.sistema.informacoes.business.
entities.Endereco;
@Stateless
@WebService
public class ServicoCentralInformacoes {
/**
* Objeto de negcio de alto nvel (Faade)
da aplicao SCI
*/
@EJB
SistemaCentralInformacoesFacade facade;
@WebMethod
@WebResult(name="listaEnderecos")
public Set<Endereco> getListaEnderecosCliente
(@WebParam(name="cpf") String cpf) {
return facade.findCliente(cpf).getEnderecos();
www.devmedia.com.br/orientacao-a-soa-parte-2-revista-java-magazine-111/26811 4/19
10/01/13 Orientao a SOA Parte 2 - Revista Java Magazine 111
}
}
A funo deste repositrio prover um catlogo central de servios para que eles
estejam disponveis e possam ser descobertos. Este ponto central deve promover o
uso e reuso destes servios, seja para fins funcionais relacionados a funes de
negcio, seja para fins tcnicos, como a correlao de cdigos de entidades em
diferentes sistemas, popularmente conhecida como DE-PARA.
Barramento de Servios
No ncleo das integraes orientadas a servios entre os sistemas do ambiente, ou
para uso em orquestraes de processos de negcio (BPM), est o Barramento de
Servios (ESB). Este componente de arquitetura ir cumprir a funo de alavancar e
estabelecer um ponto central de controle e comunicao entre os elementos que
buscam executar servios (funes de TI), e os que realizam o provimento destes
servios, favorecendo simultaneamente coeso e baixo acoplamento entre os
consumidores e provedores. Para este componente ser utilizado o Mule na sua verso
Community Edition 3.3.
www.devmedia.com.br/orientacao-a-soa-parte-2-revista-java-magazine-111/26811 5/19
10/01/13 Orientao a SOA Parte 2 - Revista Java Magazine 111
Estes elementos globais ficaro disponveis para serem utilizados nos fluxos de
mensagem, durante a configurao de elementos do tipo Endpoints de Fila (JMS) e de
Base de Dados (JDBC). Na Tabela 3, temos a relao destes elementos globais e seus
respectivos atributos.
Tabela 3. Configuraes dos Elementos Globais que sero criados para os fluxos do
Mule.
No Mule, para cada fluxo de mensagem que criamos, temos um objeto associado,
representado por um arquivo com a extenso mflow. Ao abrirmos este objeto temos
acesso rea de trabalho onde os elementos que iro compor um fluxo de mensagem
sero colocados. Esta rea de trabalho est dividida em trs sees, que podem ser
encontradas nas abas disponveis no rodap (Figura 4). A funo de cada uma destas
sees :
www.devmedia.com.br/orientacao-a-soa-parte-2-revista-java-magazine-111/26811 6/19
10/01/13 Orientao a SOA Parte 2 - Revista Java Magazine 111
Global Elements: rea para configurao dos Elementos Globais;
1. Barramento de Entrada;
3. Barramento de Sada.
Barramento de Entrada
Para descrever os componentes e funes contidos no Barramento de Entrada, que
pode ser visto na Figura 6, vamos divid-lo em grupos. Nesta diviso cada grupo
corresponder a uma funo especfica, realizada pelo conjunto de componentes nele
contido.
Grupo 1
Este grupo do Barramento de Entrada, formado por trs elementos, representa o web
www.devmedia.com.br/orientacao-a-soa-parte-2-revista-java-magazine-111/26811 7/19
10/01/13 Orientao a SOA Parte 2 - Revista Java Magazine 111
service que recebe a solicitao para execuo de um servio no Barramento. Todos os
elementos dispostos no fluxo so representados graficamente e requerem informaes
de configurao mnimas para funcionarem. Com um duplo clique sobre a
representao grfica do elemento acessamos as suas configuraes em uma janela
com suas propriedades.
HTTP (Endpoint HTTP): representa a porta HTTP onde est diposto o web service
do barramento para a entrada das mensagens. A descrio das configuraes deste
elemento se encontra na Tabela 4.
package br.ujr.soa.bus;
@XmlSeeAlso(br.ujr.soa.bus.model.Endereco.class)
@WebService
public interface InToBus {
/**
* Operao de entrada no Barramento para
processamento de um Request
*/
@WebMethod
@WebResult(name="MessageResponse")
public MessageResponse processRequest
(@WebParam(name="MessageRequest")
MessageRequest message);
}
package br.ujr.soa.bus;
@WebService(endpointInterface="br.ujr.soa.bus.InToBus",
serviceName="InToBus")
public class InToBusImpl implements InToBus {
/**
* Processamento da solicitao entrante no Barramento de Servios
*/
public MessageResponse processRequest(MessageRequest request) {
return this.prepareResponse(request);
}
www.devmedia.com.br/orientacao-a-soa-parte-2-revista-java-magazine-111/26811 8/19
10/01/13 Orientao a SOA Parte 2 - Revista Java Magazine 111
/**
* Preparao da mensagem de resposta solicitao
*/
private MessageResponse prepareResponse(MessageRequest request) {
MessageResponse response = new MessageResponse();
response.getBusInfo().setDate(Calendar.getInstance()
.getTime());
response.getBusInfo().setTimeIn(Calendar.getInstance()
.getTimeInMillis());
response.setMessageRequest(request);
return response;
}
}
Grupo 2
Grupo 3
JMS (Endpoint Mensageria): Cliente JMS para envio da mensagem XML para a fila
de entrada do Fluxo do Servio. Este componente Cliente JMS, apesar da caracterstica
padro de comunicao assncrona de filas, est configurado para funcionar no padro
request-response, propocionando assim um modelo de comunicao sncrono sobre
filas. Este modelo de comunicao utilizando mensageria, realiza os seguintes passos
para a sua execuo:
O envio da resposta pelo Servidor para a Fila designada pelo Cliente acontece
implicitamente no Mule. No necessrio intervir criando cdigos e Filas de Repostas
explcitas, para que este processo se realize. Observe a ilustrao do funcionamento
deste modelo de comunicao na Figura 7.
Neste processo de comunicao sncrona sobre Filas, se faz necessrio criar uma
correlao entre as mensagens de request e response, isto , uma forma de identificar
que a resposta (response) entregue pertence determinada solicitao (request)
anteriormente enviada. Para realizar este mecanismo de relacionamento entre estes
objetos, o CorrelationID da especificao JMS utilizado, criando o elo entre a
mensagem de envio (request) e a mensagem de resposta (response). As configuraes
necessrias a este elemento esto descritas na Tabela 7.
www.devmedia.com.br/orientacao-a-soa-parte-2-revista-java-magazine-111/26811 9/19
10/01/13 Orientao a SOA Parte 2 - Revista Java Magazine 111
Grupo 4
Neste grupo do Barramento de Entrada, temos um elemento que tem como objetivo
transformar o XML recebido como resposta da Fila para o formato de objeto Java. No
necessria nenhuma configurao, somente posicionar o elemento no ponto correto
do fluxo de mensagem para realizar a sua funo. O elemento contido no grupo 4 o:
<br.ujr.soa.bus.MessageResponse>
<messageRequest>
<!-- Informaes do consumidor -->
<userId>UALTER</userId>
<pwd>minhasenha</pwd>
<!-- Identificao do servio solicitado pelo consumidor -->
<messageRouting>MF_S001</messageRouting>
<!-- Contedo da mensagem de solicitao, parmetros
de entrada do servio -->
<contentRequest>
<entry>
<string>cpf</string>
<string>8883227110</string>
</entry>
</contentRequest>
</messageRequest>
<!-- Contedo da resposta. Neste momento, ainda vazio durante
o barramento de entrada.
Ser preenchido no prximo fluxo dentro da estrutura
Barramento de Servios -->
<contentResponse/>
<!-- Informaes tcnicas (data, hora de entrada e hora
de sada no Barramento). Podem ser
utilizadas para anlise de requisitos no-funcionais,
como a performance do servio. -->
<busInfo>
<date>2012-09-22 01:13:58.536 UTC</date>
<timeIn>1348276438536</timeIn>
<timeOut>0</timeOut>
</busInfo>
</br.ujr.soa.bus.MessageResponse>
Grupo 1
www.devmedia.com.br/orientacao-a-soa-parte-2-revista-java-magazine-111/26811 10/19
10/01/13 Orientao a SOA Parte 2 - Revista Java Magazine 111
Grupo 2
Neste grupo temos um elemento que tem a funo de armazenar em uma varivel a
informao recebida no grupo anterior, representada por um objeto Java
(MessageResponse). O elemento deste grupo o:
Grupo 3
Neste ponto do fluxo iremos buscar o valor que representa a localizao do web
service que fornece efetivamente os endereos do cliente. Segue a descrio deste
elemento:
Grupo 4
Neste grupo temos o elemento responsvel por armazenar em uma varivel o valor
obtido na pesquisa da localizao do servio no catlogo. Este valor pode ser
observado na Figura 8. Segue a descrio deste elemento:
www.devmedia.com.br/orientacao-a-soa-parte-2-revista-java-magazine-111/26811 11/19
10/01/13 Orientao a SOA Parte 2 - Revista Java Magazine 111
Servio.
Grupo 5
Obter CPF (Script Groovy): Por meio de um script Groovy, buscamos no objeto
armazenado na varivel messageResponse, o valor do parmetro de entrada
necessrio ao web service do servio. As configuraes deste elemento esto descritas
na Tabela 12.
Grupo 6
O elemento Flow Reference neste grupo tem somente a funo de fazer a referncia a
outro fluxo de mensagem. Este fluxo de mensagem externo ser executado neste
ponto do fluxo de mensagem principal. Aps a execuo do subfluxo, o comando de
execuo retorna ao fluxo de mensagem chamador. Utilizamos esse elemento para
separarmos a execuo da chamada ao servio do provedor em um outro fluxo de
mensagem. Desta forma temos o ponto de execuo do servio fornecido pelo
provedor desacoplado de todo o resto do fluxo.
Grupo 7
SOAP (Endpoint SOAP): Este o cliente que executa o web service do sistema SCI
provendo o servio de busca de endereos dos clientes. Para que o Mule consuma o
web service, necessria a criao dos artefatos JAX-WS client, o que pode ser feito
utilizando a ferramenta wsimport. As configuraes deste elemento esto descritas na
Tabela 13.
HTTP (Endpoint HTTP): Elemento que realiza a execuo do web service via o canal
HTTP. As configuraes deste elemento esto descritas na Tabela 14.
Grupo 8
www.devmedia.com.br/orientacao-a-soa-parte-2-revista-java-magazine-111/26811 12/19
10/01/13 Orientao a SOA Parte 2 - Revista Java Magazine 111
endereos esto contidos neste objeto.
Grupo 9
import br.ujr.soa.bus.MessageResponse;
import java.util.List;
Grupo 10
www.devmedia.com.br/orientacao-a-soa-parte-2-revista-java-magazine-111/26811 13/19
10/01/13 Orientao a SOA Parte 2 - Revista Java Magazine 111
receber a resposta via Fila JMS. As configuraes deste elemento esto descritas na
Tabela 16.
Barramento de Sada
Como prxima etapa dentro da estrutura definida para o nosso Barramento de
Servio, para finalizar a transao, temos o fluxo do Barramento de Sada. Esta parte
ir executar qualquer funo antes de entregar a resposta ao consumidor do servio.
Na Figura 9 vemos o fluxo do Barramento de Sada.
Grupo 1
Grupo 2
Grupo 3
Java (Transformer Java): Este transformador uma classe Java que tem o intuito
de realizar funes necessrias no final do fluxo do Barramento de Servios. Funes
que podem variar conforme a necessidade, tais como: logging, auditing,
transformao, enriquecimento, etc. Neste caso, apenas enriquecemos a mensagem
adicionando o tempo em milissegundos da sada da mensagem do ESB. As
configuraes deste elemento esto descritas na Tabela 18.
Grupo 4
www.devmedia.com.br/orientacao-a-soa-parte-2-revista-java-magazine-111/26811 14/19
informao ser enviada como mensagem de resposta final solicitao de execuo
de servio no Barramento de Servio. O elemento contido neste grupo o:
Grupo 5
Neste ltimo grupo do Barramento de Sada, temos um elemento que no possui total
importncia para o resultado final solicitao de servio pelo consumidor. Apenas
inserimos este elemento para gravar localmente em um arquivo o contedo da
mensagem de resposta retornada ao consumidor. Segue a descrio do elemento
deste grupo:
File (Endpoint File): Este elemento tem como objetivo apenas registrar em um
arquivo a resposta que ser enviada para o consumidor. No h necessidade funcional
deste elemento. Ele apenas cumpre uma caracterstica no-funcional, fazendo o log da
informao que devolvida solicitao de execuo de servio no Barramento. As
configuraes deste elemento esto descritas na Tabela 19.
package br.ujr.soa.bus;
import java;
return response;
}
}
<soapenv:Envelope xmlns:soapenv=
"http://schemas.xmlsoap.org/soap/envelope/
"xmlns:bus="http://bus.soa.ujr.br/">
<soapenv:Header/>
<soapenv:Body>
<bus:processRequest>
<MessageRequest>
<!-- Parmetros de entrada para o servio MF_S001
(Busca Endereos Cliente) -->
<contentRequest>
<entry>
<key>cpf</key>
<value>8883227110</value>
</entry>
</contentRequest>
<!-- Identificao do Servio requerido pelo consumidor -->
<messageRouting>MF_S001</messageRouting>
<!-- Identificao do consumidor -->
<pwd>minhasenha</pwd>
<userId>UALTER</userId>
</MessageRequest>
</bus:processRequest>
</soapenv:Body>
</soapenv:Envelope>
Quando criamos este envelope SOAP de requisio pela ferramenta, os valores dos
parmetros so apresentados por padro com um sinal de interrogao no local.
Substitumos estes sinais de interrogao pelos reais valores dos parmetros que
iremos utilizar para chamar o servio. Na Listagem 7 podemos visualizar o envelope
SOAP com os valores dos parmetros j digitados em negrito, necessrios nossa
chamada teste.
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<mule:header xmlns:mule="http://www.muleumo.org/providers/soap/1.0">
<mule:MULE_CORRELATION_ID>ID:ujrserver.local-53666-1348292434964-
1:1:12:1:1</mule:MULE_CORRELATION_ID>
<mule:MULE_CORRELATION_GROUP_SIZE>-1
</mule:MULE_CORRELATION_GROUP_SIZE>
<mule:MULE_CORRELATION_SEQUENCE>-1
</mule:MULE_CORRELATION_SEQUENCE>
</mule:header>
</soap:Header>
<soap:Body>
<ns1:processRequestResponse xmlns:ns1="http://bus.soa.ujr.br/">
<!-- Objeto que encapsula a resposta
solicitao de servio no ESB -->
<MessageResponse>
<!-- Informaes no-funcionais, tempo de entrada e
sada no Barramento -->
<busInfo>
www.devmedia.com.br/orientacao-a-soa-parte-2-revista-java-magazine-111/26811 16/19
10/01/13 Orientao a SOA Parte 2 - Revista Java Magazine 111
<date>2012-09-22T02:40:51.507-03:00</date>
<timeIn>1348292451507</timeIn>
<timeOut>1348292452453</timeOut>
<timeTotal>00:00:946</timeTotal>
</busInfo>
<!-- Contedo da Resposta solicitao de servio
MF_S001 no ESB. No caso, uma lista de endereos
do cliente com cpf 8883227110 -->
<contentResponse>
<entry>
<key>2</key>
<value xsi:type="ns3:Endereco"
xmlns:xsi="http://www.w3.org/2001/
XMLSchema-instance" xmlns:ns3=
"http://bus.soa.ujr.br/">
<logradouro>LA 11 Street</logradouro>
<complemento>Home</complemento>
<cep>7655765</cep>
<cidade>Los Angeles</cidade>
<enderecoEntrega>true</enderecoEntrega>
</value>
</entry>
<entry>
<key>1</key>
<value xsi:type="ns3:Endereco"
xmlns:xsi="http://www.w3.org/2001/
XMLSchema-instance"
xmlns:ns3="http://bus.soa.ujr.br/">
<logradouro>Fith Avenue</logradouro>
<complemento>Business</complemento>
<cep>0123311</cep>
<cidade>New York</cidade>
<enderecoEntrega>false</enderecoEntrega>
</value>
</entry>
</contentResponse>
<!-- Objeto que encapsula a solicitao
enviada da resposta do servio -->
<messageRequest>
<contentRequest>
<entry>
<key>cpf</key>
<value>8883227110</value>
</entry>
</contentRequest>
<messageRouting>MF_S001</messageRouting>
<pwd>minhasenha</pwd>
<userId>UALTER</userId>
</messageRequest>
</MessageResponse>
</ns1:processRequestResponse>
</soap:Body>
</soap:Envelope>
Com este teste realizado via soapUI, podemos analisar o comportamento e o resultado
do processamento da mensagem na solicitao de consumo do servio de Busca de
Endereos do Cliente, no Barramento de Servios da empresa fictcia Arkham
Company. Os consumidores podem agora utilizar o ESB para executar os servios
disponveis no Catlogo de Servios da empresa.
www.devmedia.com.br/orientacao-a-soa-parte-2-revista-java-magazine-111/26811 17/19
10/01/13 Orientao a SOA Parte 2 - Revista Java Magazine 111
Concluso
Na busca por um ambiente orientado a servios vrios desafios devero ser
transpostos para atingir alguns dos benefcios propostos por este estilo de
arquitetura. H sempre uma maior dificuldade quando se trata de mudana de hbito e
de ideias relacionadas a uma escola de pensamento que a um longo tempo est
estabelecida nos ambientes de negcio e tecnologia. Muitas vezes percebida em forma
de vcios.
Links
Definies de termos adotados na orientao a servios.
http://www.soaglossary.com
Livros
Escrito pelo especialista no assunto Thomas Erl, descreve conceitos,
fundamentos, origens, tecnologia e casos de estudos relacionados
abordagem deste estilo de arquitetura.
Service-Oriented Architecture: Concepts, Technology and Design, Thomas Erl,
Prentice Hall, 2005
0 COMENTRIO
www.devmedia.com.br/orientacao-a-soa-parte-2-revista-java-magazine-111/26811 18/19
10/01/13 Orientao a SOA Parte 2 - Revista Java Magazine 111
Administrao do Firebird/InterBase
[Ver todos]
DevMedia no Facebook
Curtir 5.546
www.devmedia.com.br/orientacao-a-soa-parte-2-revista-java-magazine-111/26811 19/19