Executando os Contêineres do eXtreme Scale com Plug-ins Não Dinâmicos em um Ambiente do OSGi

Se você não precisar usar o recurso dinâmico de um ambiente de OSGi, será possível ainda aproveitar o acoplamento mais fechado, o empacotamento declarativo e as dependências de serviço que a estrutura de OSGi oferece.

Antes de Iniciar

  1. Desenvolva seu aplicativo usando as APIs e plug-ins do WebSphere eXtreme Scale.
  2. Crie o pacote do aplicativo em um ou mais pacotes configuráveis do OSGi com as dependências de importação ou exportação apropriadas que são declaradas em um ou mais manifestos do pacote configurável. Assegure-se de que todas as classes ou pacotes que são necessários para os plug-ins, agentes, objetos de dados e assim por diante, sejam exportados.

Sobre Esta Tarefa

Com os plug-ins dinâmicos, é possível atualizar seus plug-ins sem parar a grade. Para usar este recurso, os plug-ins originais e novos devem ser compatíveis. Se você não precisar atualizar os plug-ins ou puder parar a grade para atualizá-los, talvez não seja necessária a complexidade dos plug-ins dinâmicos. Entretanto, ainda há boas razões para executar seu aplicativo eXtreme Scale em um ambiente OSGi. Essas razões incluem acoplamento mais compacto, pacote declarativo, dependências de serviço e assim por diante.

Uma preocupação ao hospedar a grade ou o cliente em um ambiente OSGi sem usar plug-ins dinâmicos (mais especificamente sem declarar os plug-ins usando serviços OSGi) é como o pacote configurável do eXtreme Scale carrega as classes de plug-in. O pacote configurável do eXtreme Scale conta com os serviços OSGi para carregar as classes de plug-in, o que permite que o pacote configurável chame os métodos de objeto nas classes em outros pacotes configuráveis sem importar diretamente os pacotes dessas classes.

Quando os plug-ins não ficam disponíveis pelos serviços OSGi, o pacote configurável do eXtreme Scale deve ser capaz de carregar as classes de plug-in diretamente. Em vez de modificar o manifesto do pacote configurável do eXtreme Scale para importar as classes de usuário e pacotes, crie um fragmento de pacote configurável que inclua as importações necessárias do pacote. O fragmento também pode importar as classes necessárias para outras classes de usuário não plug-in, como objetos de dados e classes de agente.

Procedimento

  1. Crie um fragmento de OSGi que usa o pacote configurável do eXtreme Scale (cliente ou servidor, dependendo do ambiente de implementação desejado) como seu host. O fragmento declara dependências (Import-Package) em todos os pacotes que um ou mais plug-ins devem carregar. Por exemplo, se você estiver instalando um plug-in serializador cujas classes residem no pacote com.mycompany.myapp.serializers e que dependa das classes no pacote com.mycompany.myapp.common, seu arquivo META-INF/MANIFEST.MF de fragmento será parecido com exemplo a seguir:
    Bundle-ManifestVersion: 2
    Bundle-Name: Plug-in fragment for XS serializers
    Bundle-SymbolicName: com.mycompany.myapp.myfragment; singleton:=true
    Bundle-Version: 1.0.0
    Fragment-Host: com.ibm.websphere.xs.server; bundle-version=7.1.1
    Manifest-Version: 1.0
    Import-Package: com.mycompany.myapp.serializers,
     com.mycompany.myapp.common
    …
    Este manifesto deve ser empacotado em um arquivo JAR de fragmento, o que neste exemplo é com.mycompany.myapp.myfragment_1.0.0.jar.
  2. Implemente o fragmento recentemente criado, o pacote configurável do eXtreme Scale e os pacotes configuráveis do aplicativo em seu ambiente OSGi. Agora, inicie os pacotes configuráveis.

Resultados

É possível agora testar e executar seu aplicativo no ambiente OSGi sem usar os serviços OSGi para carregar as classes de usuário, como plug-ins e agentes.