Desenvolvendo aplicativos de Service Component Architecture usando Rational Application Developer

Este artigo descreve como desenvolver e acessar aplicativos de SCA usando Rational Application Developer Versão 8 com um aplicativo de amostra. Ele começa com algumas definições básicas e termos de uso frequente e, em seguida, descreve pré-requisitos e links de referência antes de começar a desenvolver aplicativos de SCA. Depois, explica com os assistentes do Rational Application Developer para criar um aplicativo de SCA de amostra, como criar diferentes ligações suportadas para Serviços de SCA e Referências de SCA, tais como ligação de SCA padrão, ligação de serviços da Web e ligações de EJB. Este artigo é concluído com a descrição de como o aplicativo de cliente de Servlet acessa o aplicativo de amostra de SCA.

Lokanadham Nalla, TXSeries Developer, IBM

Lokanadham Nalla é TXSeries Developer, que trabalha no India Software Labs, em Bangalore, na Índia, com conhecimento em tecnologias Java, J2EE e SOA.



26/Jan/2011

Visão geral

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.

Definições básicas de SCA

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.


Instalaçã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
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
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

Criando um projeto SCA

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
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
Opções do Projeto SCA

Clique nos botões Next > Finish para criar CalculatorProject.

Criar Composto SCA

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
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
Opções do Composto SCA

Criar Componente 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
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
Opções do Componente SCA

A imagem do MainComponent é criada no diagrama do composto, como mostra a Figura 9.

Figura 9. MainComponent
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
Incluindo um serviço
Figura 11. Incluindo uma referência
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
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
Propriedades e ligações de serviço

Da mesma forma, ligações também podem ser aplicadas para uma referência.

Implementação de componente

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
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
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
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
Diagrama composto de SCA da Calculadora

Criar Contribuição

Contribuição pode ser criada para o composto da Calculadora usando assistentes do RAD, como mostra a Figura 18.

Figura 18. Criando Contribuição
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
Incluindo/Removendo projetos
Figura 20. Adicionando o projeto da Calculadora
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 as classes de stub do WSDL usando as seguintes etapas:

  1. Abra File > New > Other e selecione o projeto de cliente de serviço da Web.
  2. Especifique http://server-name:http-port/MainComponent/CalculatorInterface?wsdl na definição de serviço
  3. 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
Cliente de serviço da Web
  1. Especifique o pacote com.ibm.sca.stubs, como mostra a Figura 22, e clique em Finish.
Figura 22. Especificar pacote de classes stub
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
  • 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
  • Para executar o aplicativo de amostra, abra a seguinte URL: http://server-name:http-port/SCAClient

Download

DescriçãoNomeTamanho
Sample downloads for this articleDoNotLeaveThisLink.zip10KB

Recursos

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Rational
ArticleID=620148
ArticleTitle=Desenvolvendo aplicativos de Service Component Architecture usando Rational Application Developer
publish-date=01262011