Dev (Back & Front)ARTIGO

SCA com Java – Parte 01

SCA é um padrão aberto para construção de serviços. Esse padrão é
uma das possibilidades para a implementação de serviços compostos
usando SOA, mas não é a única. A idéia não é nem um pouco nova, na
verdade se você usa Spring Framework é bem provável que você já venha fazendo algo parecido.

A
grande diferença do SCA para o que você já faz é que, como dito antes,
SCA é um padrão aberto que prove uma solução para amarração (wire) de
serviços e composição de serviços de uma forma padronizada, consistente
e com independência de fornecedor. Além disso o SCA possibilita a tão
sonhada interoperabilidade.

A
Interoperabilidade é algo fundamental quando falamos de SOA, mas isso
pode ser conseguido de outras formas utilizando orquestração de
serviços com BPEL e deixando o transporte para um ESB a vantagem de
usar SCA sobre essa outra abordagem que descrevi é o fato de que você
tem um módulo mais coeso com SCA.

Conceitos Básicos de SCA

Componente SCA

A
Figura a cima ilustra do que é composto um componente SCA. Além de
componentes, SCA conta com Composite e Domínio que são outros conceitos
básicos e importantes, vamos falar primeiro do Componente.

O
Componente SCA em Java é um ordinária classe java que implementa alguma
interface, é só isso mesmo, você pode escrever componentes em outras
linguagens e tecnologias como por exemplo BPEL, C++ ou até mesmo em
EJB. Para isso vamos precisar de mais um conceito que é o Binding, mas
isso fica mais para frente.

Voltando ao componente, ele pode expor seus serviços de diversas formas, as mais comuns são a própria
interface Java e depois WebServices. Esse componente pode usar outros
componentes que são chamados de referências.

O mesmo serviço
pode ter propriedades que são pontos de parametrização do serviço. Como
eu disse antes se você já desenvolve com Spring Framework isso tudo faz
muito sentido e não é muito diferente da forma que você trabalha.

Adaptar
uma aplicação bem feita com Spring para SCA é um doce, desde que você
tenha usado e abusado de interfaces e injeção de dependência vai ser
um tarefa fácil, mas isso fica para outro post.

O Composite é
como se fosse um modulo para o SCA. Nele você faz a composição de um
serviço e diz que esse serviço tem diversos serviços. Essas
configurações são feitas em XML de forma muito parecida com a injeção
de dependências do Spring Framework.

Você pode trabalhar de duas
formas: ou configura todas as amarrações do SCA através de arquivos
.composite ou você usa o auto-wire que é uma forma de ele amarrar os
serviços utilizando menos configuração; ainda esse é um recurso poderoso
que existe no Fabric3 que é uma implementação de SCA para java.

Isso mesmo, meu amigo, esse recurso de auto-wire é muito semelhante ao recurso de auto-wire do Spring Framework. Você pode compor diversos composites com SCA.

O Domínio é
onde existe um runtime de SCA, você pode ter vários em uma máquina ou
ter um domínio por máquina, nessa questão a especificação do SCA 1.0
não se manifesta em como seria esse mecanismo de remotabilidade, ela
foca nos componentes e na forma de amarração apenas.

SCA com Composite – Componentes e Domínios

A
Figura acima mostra os conceitos explicados anteriormente, nesse
cenário uma aplicação JEE em alguns containers acessa o composite SCA A
que por sua vez acessa a um componente Java que acessa um componente
de outro domínio escrito em C++ e acessa um banco de dados forma do
SCA. Como pode ver, tecnologias que não sejam SCA podem conversar com
tecnologias SCA.

Os Bindings fazem
parte de especificação SCA e padronização a comunicação de SCA com
outras tecnologias como EJB, JMS, JCA e outros. Isso ajuda a
desenvolver aplicações em java que podem utilizar SCA e bem como a
migrar aplicações existentes para o padrão SCA.

Existem Anotações

Na
especificação de SCA para java estão especificadas um conjunto de
anotações que podem ser utilizadas, dentre elas cito a @Reference e
@Propertie que servem, na ordem, para indicar a referência de outros
serviço e para obter a propriedade de um serviço.

Existem
algumas implementações de SCA, existem implementações proprietárias como
a da IBM, mas existem implementações open source como a da Fabric3. No
próximo texto vou mostrar como implementar um composite SCA de maneira
simples com Fabric3 Maven 2 e anotações.

Abraços e até a próxima!

é Técnico em Processamento de Dados e graduando em Ciências da Computação(7º sem.) na Ulbra. Já trabalhou com desenvolvimento de software em VB, ASP, .NET e PHP. Atualmente é Arquiteto de Software criando soluções corporativas em Java. Certificado pela SUN com SCJP 5 e SCWD 5. Mantém o blog (diego-pacheco.blogspot.com).

Ver perfil