Service Component Architecture (SCA) é um modelo de programação para desenvolvimento de aplicativos baseados em SOA. As especificações para implementar o modelo de programação SCA são fornecidos por osoa.org, uma colaboração aberta em SOA de líderes do segmento de mercado, incluindo a IBM. O Feature Pack de SCA para WebSphere Application Server implementou muitas das especificações fornecidas por osoa.org para fornecer modelo de programação de SCA para desenvolvedores Java/JEE.
Rational Application Developer (RAD) Versão 8 fornece o recurso de conjunto de ferramentas para desenvolver aplicativos de SCA. Este artigo descreve como desenvolver aplicativos de SCA, usando RAD com um aplicativo de amostra demonstrando ligações de SCA suportadas. Nós começamos com definições básicas de SCA, software necessário, desenvolvimento de um aplicativo SCA simples e, por fim, uso de aplicativos de cliente de Servlet.
Esta seção descreve terminologia de SCA extraída do Centro de Informações do RAD 8.
Domínio:
Uma entidade de tempo de execução bem limitada, que contém um
conjunto de componentes de serviço ligados para fornecer um conjunto de funções de
negócios que seja relevante para um negócio.
Contribuição:
Um pacote de artefatos de arquivo, incluindo um documento
de metadados de contribuição e geralmente um ou mais compostos, coletados para
implementação em um domínio de SCA.
Componente:
A configuração de uma implementação que fornece ou consome
serviços
Composto:
Uma unidade de montagem de componentes. Compostos podem ser
implementados em um domínio e serem conhecidos como compostos implementáveis ou
usados para implementar outros componentes e serem conhecidos como compostos de
implementação ou compostos internos.
Serviço:
Uma declaração de um serviço ou conjunto de operações de
negócios oferecida por um componente. Um serviço é caracterizado por uma interface e
por uma ou mais ligações de protocolo.
Referência:
Uma declaração de um serviço ou conjunto de operações de
negócios consumida ou exigida por um componente. Uma referência é caracterizada por
uma interface e por uma ou mais ligações de protocolo.
Interface:
Um conjunto logicamente coerente de assinaturas de operações
que descreve um serviço fornecido ou uma referência de serviço consumida. Embora
outras linguagens sejam permitidas, pela extensibilidade do SCA, predominantemente,
interfaces são escritas em Java ou WSDL.
Ligação:
Uma descrição de um mecanismo de acesso para um serviço ou a
partir de uma referência. Uma ligação de serviço descreve como um serviço é
publicado no tempo de execução e como entidades externas podem ser comunicar com
ele. Uma ligação de referência descreve como uma referência conecta-se e se comunica
com serviços externos.
Fio:
Uma dependência de uma referência de componente a um serviço de
componente
Implementação:
Uma unidade de tecnologia de software específica de uma
linguagem, como uma classe Java ou um composto SCA, que fornece a lógica de negócios
abaixo de um componente.
Propriedade:
Um valor de dado calculado e injetado por um componente em
uma implementação
Intenção:
Uma declaração de uma política abstrata ou qualidade de
serviço exigida de um componente, serviço ou referência. As intenções livram o
desenvolvedor do ônus de ter que entender políticas concretas geralmente
complexas.
Política:
Uma declaração concreta de uma capacidade, restrição ou outro
requisito não funcional que deve ser honrado por um componente, serviço ou
referência.
Conjunto de Política:
Uma coleção de políticas concretas mutuamente
compatíveis que podem ser aplicadas a um tipo de ligação ou de implementação
específico. Embora conjuntos de políticas possam ser anexados a componentes,
serviços e referências no tempo de desenvolvimento, SCA recomenda uma abordagem de
ligação tardia, na qual conjuntos de políticas e ligações são selecionados no tempo
de implementação.
Esta seção fornece informações sobre a instalação do software Rational Application Developer 8.0 para WebSphere Application Server.
- O Centro de Informações do IBM Rational Application Developer 8.0 fornece detalhes adicionais sobre a instalação do Rational Application Developer para Software WebSphere.
- O recurso "Service Component Architecture development tools" deve estar ativado na lista de recursos durante a instalação do RAD usando o IBM Installation Manager Software, como realçado na Figura 1.
Figura 1. Ferramentas de desenvolvimento de Service Component Architecture
- Além disso, "Feature Pack for Service Component Architecture" deve estar ativado na seção WebSphere Application Server, como realçado na Figura 2 abaixo.
Figura 2. Feature Pack para Service Component Architecture
Instalando o Feature Pack de SCA
Esta seção fornece informações sobre a instalação do Feature Pack do SCA se o WebSphere Application Server for instalado externamente ao RAD.
Para instalar o Feature Pack de Service Component Architecture (SCA), é necessário concluir as instruções fornecidas na seção "Installing and uninstalling the feature pack on distributed operating systems" no Centro de Informações do WebSphere Application Server.
Desenvolvendo aplicativos de SCA usando o RAD
Esta seção descreve as tarefas necessárias para desenvolver um simples aplicativo de calculadora de SCA usando assistentes do RAD.
- Criar Projeto SCA
- Criar Composto SCA
- Criar Componente SCA
- Incluindo serviço ou referência a um Componente
- Aplicar ligação a um serviço ou referência
- Implementação de componente
- Criar Contribuição
Esta seção descreve como criar um novo projeto SCA usando assistentes do RAD. Na área de trabalho do RAD, abra o menu de opções File > New > Other. Selecione SCA Project, como mostra a Figura 3.
Figura 3. Criar Projeto SCA
Especifique o nome do projeto como 'CalculatorProject', como mostra a Figura 4 abaixo, e marque a caixa de seleção 'Implementation Types for SCA Components' na seção Java.
Figura 4. Opções do Projeto SCA
Clique nos botões Next > Finish para criar CalculatorProject.
Expanda CalculatorProject > SCA Content na janela do Enterprise Explorer, e clique com o botão direito em Composites. Selecione New > SCA Composite , como mostra a Figura 5.
Figura 5. Criar Composto SCA
Especifique o nome do composto como CalculatorComposite e o nome de espaço de destino como http://calculator , como mostra a Figura 6, e clique no botão Finish.
Figura 6. Opções do Composto SCA
Expanda CalculatorProject > SCA Content > Composites > http://calculator > e clique com o botão direito em CalculatorComposite. Selecione a opção New > SCA Component , como mostra a Figura 7.
Figura 7. Criar Componente SCA
Especifique o nome do Componente como MainComponent , como especifica a Figura 8, e clique no botão Finish.
Figura 8. Opções do Componente SCA
A imagem do MainComponent é criada no diagrama do composto, como mostra a Figura 9.
Figura 9. MainComponent
Incluindo serviço ou referência a um Componente
Clique com o botão direito na imagem de MainComponent para criar um serviço e uma referência, como mostram a Figura 10 e a Figura 11. Dê ao serviço o nome de CalculatorInterface e à referência, addReference.
Figura 10. Incluindo um serviço
Figura 11. Incluindo uma referência
Há duas abordagens para implementação de serviço SCA: de cima para baixo e de baixo para cima. Desenvolvimento de cima para baixo é usado ao começar com um WSDL existente. Desenvolvimento de baixo para cima é usado ao começar com código Java existente. A amostra usa a abordagem de baixo para cima, na qual o tipo de Interface de serviço é configurado como Java.
- Crie o pacote com.ibm.sca.sample na pasta src do CalculatorProject.
- Crie uma nova interface Java, como mostra a Listagem 1.
Listagem 1. Interface de Serviço
package com.ibm.sca.sample;
import org.osoa.sca.annotations.Remotable;
@Remotable
public interface CalculatorInterface {
int calculate(int firstValue, int secondValue, String operation);
}
|
- A anotação Remotable deve ser incluída na interface
- Configure a propriedade Interface do serviço para com.ibm.sca.samples.CalculatorInterface como realçado na Figura 12.
Figura 12. Configurar interface de serviço
Observação:Se a abordagem de cima para baixo for usada, selecione WSDL como o tipo de Interface e especifique o local do WSDM em Interface.
Aplicar ligação a um serviço ou referência
O Feature Pack de SCA suporta as seguintes ligações:
- Serviço da Web
- Atom
- HTTP
- EJB
- JMS
- SCA
Os usuários podem escolher aplicar essas ligações dependendo do tipo de cliente que estejam usando. Se o aplicativo cliente for um cliente de serviço da Web, uma ligação de serviço da Web pode ser aplicada. Se o aplicativo cliente for um cliente EJB, ligações de EJB podem ser aplicadas.
No aplicativo de amostra da Calculadora, a ligação de serviço da Web é usada para que o aplicativo de Servlet cliente possa usar o arquivo WSDL gerado para comunicação com o aplicativo de SCA de Calculadora. Siga as etapas abaixo para aplicar a ligação de serviço da Web ao serviço CalculatorInterface.
- Clique com o botão direito no serviço CalculatorInterface, selecione, no painel do menu, a opção Show Properties View, que exibe a janela de propriedades, como mostra o painel inferior da Figura 13.
- Selecione a opção Binding no painel à esquerda da janela de propriedades.
- Uma lista de ligações suportadas pelo Feature Pack de SCA é exibida após clicar no botão Add em Bindings, como mostra a Figura 13.
- Selecione web service na lista de ligações e clique em 'OK'. Agora as APIs de cliente do serviço da Web podem ser usadas para chamar o aplicativo Calculadora de SCA.
- Quando o aplicativo Calculadora for implementado no WebSphere Application Server, ele gera um arquivo WSDL que pode ser localizado usando a seguinte URL: http://server-name:http-port/MainComponent/CalculatorInterface?wsdl.
Figura 13. Propriedades e ligações de serviço
Da mesma forma, ligações também podem ser aplicadas para uma referência.
Clique com o botão direito em MainComponent e selecione a opção "Regenerate implementation", como mostra a Figura 14.
Figura 14. Gerar Implementação
- Escolha Java na lista "Implementation Type" na próxima tela.
- Clique no botão Next e observe a classe de implementação que será gerada, como realçado na Figura 15.
- Clique no botão Finish para gerar a classe de implementação com.ibm.sca.samples.CalculatorInterfaceImpl.
Figura 15. Configuração da classe de implementação
A Listagem 2 abaixo mostra a classe de implementação gerada.
Listagem 2. Classe de implementação
package com.ibm.sca.sample;
import org.osoa.sca.annotations.Service;
@Service (CalculatorInterface.class)
public class CalculatorInterfaceImpl implements CalculatorInterface {
public int calculate(int firstValue, int secondValue, String operation) {
return 0;
}
}
|
A referência criada precisa ser definida na implementação do componente. Em outras palavras, nós exigimos que MainComponent tenha referência, e ela depende do serviço de algum outro componente. Portanto um novo componente (AddComponent) com um serviço precisa ser criado, e é preciso mapear a referência do MainComponent ao serviço AddComponent como realçado na Figura 16.
Figura 16. Ligando a referência do MainComponent ao serviço AddComponent
- As etapas para criar AddComponent e serviço são semelhantes ao MainComponent.
- A implementação de MainComponent deve ter definição de referência, como mostra a Listagem 3.
Listagem 3. Definição de referência
AddInterface addInterface;
@Reference
public void setAddReference(AddInterface addInterface){
this.addInterface=addInterface;
}
|
- Referência de MainComponent e serviço AddComponent devem ser relacionados à ligação de SCA, como mostra a janela de propriedades da Figura 17. Isso não é obrigatório por padrão. Se não for escolhida qualquer ligação para um serviço ou referência, as ligações de SCA padrão são aplicadas automaticamente.
- A classe de implementação AddComponent precisa ser como a mostrada na Listagem 4.
Listagem 4. Implementação de AddComponent
package com.ibm.sca.sample;
import org.osoa.sca.annotations.Service;
@Service (AddInterface.class)
public class AddInterfaceImpl implements AddInterface {
public int add(int firstValue, int secordValue) {
return firstValue+secordValue;
}
}
|
Da mesma forma, SubstractComponent, MultiplyComponent e DivisionComponent e seus serviços podem ser criados e ligados às referências de MainComponent. Após criar todos os componentes acima, o diagrama composto de SCA da Calculadora deve ser semelhante ao da Figura 17.
Figura 17. Diagrama composto de SCA da Calculadora
Contribuição pode ser criada para o composto da Calculadora usando assistentes do RAD, como mostra a Figura 18.
Figura 18. Criando Contribuição
Após a contribuição ser criada, ela pode ser incluída para implementação na instância local do WebSphere Application Server, como mostra a Figura 19 e a Figura 20.
Figura 19. Incluindo/Removendo projetos
Figura 20. Adicionando o projeto da Calculadora
Observação: A contribuição também pode ser exportada como archive de SCA para implementação em WebSphere Application Server externo ao RAD.
Cliente de Servlet usando o aplicativo de Calculadora de SCA
Esta seção descreve como usar o serviço MainComponent do aplicativo de SCA da Calculadora a partir de um aplicativo Servlet.
- Crie um projeto da Web Dinâmico no espaço de trabalho do RAD
- O WSDL deve estar localizado em: http://server-name:http-port/MainComponent/CalculatorInterface?wsdl
Crie as classes de stub do WSDL usando as seguintes etapas:
- Abra File > New > Other e selecione o projeto de cliente de serviço da Web.
- Especifique http://server-name:http-port/MainComponent/CalculatorInterface?wsdl na definição de serviço
- Especifique o cliente de Desenvolvimento, como realçado na Figura 21, e clique no botão Next.
Figura 21. Cliente de serviço da Web
- Especifique o pacote com.ibm.sca.stubs, como mostra a Figura 22, e clique em Finish.
Figura 22. Especificar pacote de classes stub
O Servlet pode usar o código realçado na Listagem 5 abaixo.
Listagem 5. APIs stub de serviço da Web
import com.ibm.sca.stubs.CalculatorInterface;
import com.ibm.sca.stubs.CalculatorInterfaceService;
...
CalculatorInterfaceService service = new CalculatorInterfaceService();
CalculatorInterface ci = (CalculatorInterface) service.getCalculatorInterfacePort();
int result = ci.calculate(firstValue, secondValue, operation);
|
Trabalhando com amostra fornecida
Esta seção descreve as etapas necessárias para implementar a amostra de SCA da Calculadora e implementar o aplicativo cliente de Servlet de SCA e para trabalhar com ele.
- Faça download e extraía o arquivo download.zip localizado na seção de download.
- Execute o seguinte comando para implementar o aplicativo de SCA como BLA e
também implemente o cliente de Servlet.
- Plataformas Unix
wsadmin.sh –f deploy.py - Plataforma Windows
wsadmin.bat –f deploy.py
- Plataformas Unix
- Para remover a implementação das amostras, execute o seguinte comando
- Plataformas Unix
wsadmin.sh –f undeploy.py - Plataforma Windows
wsadmin.bat –f undeploy.py
- Plataformas Unix
- Para executar o aplicativo de amostra, abra a seguinte URL: http://server-name:http-port/SCAClient
| Descrição | Nome | Tamanho | Método de download |
|---|---|---|---|
| Sample downloads for this article | DoNotLeaveThisLink.zip | 10KB | HTTP |
Informações sobre métodos de download
-
Centro de Informações do Rational
Application Developer
-
Education Assistant para Feature Pack de Service Component Architecture do
WebSphere Application Server V7.0.
- "Exploring the WebSphere Application Server
Feature Pack for SCA, Part 1: An overview of the Service Component Architecture
feature pack", (dez 2008) é uma introdução aos conceitos de Component
Architecture (SCA), objetivos da tecnologia e destaques de alguns pontos de
integração principais.