Você já tem seu software instalado, mas ainda precisa de um método mais eficaz para permitir que seus usuários técnicos expandam a plataforma.
Embora o OSGi seja bem conhecido pela maioria dos desenvolvedores Java, integrá-lo ao seu produto pode parecer uma tarefa assustadora. A falta de clareza sobre o funcionamento preciso do OSGi atrapalha ainda mais o caminho a seguir.
Em contraste com qualquer coisa que eles gostariam de experimentar, o OSGi parece mais uma tentativa de navegar no mar largo para muitos desenvolvedores Java.
Este artigo apresentará o tutorial de primavera OSGi Felix usando um programa simples e passará por suas vantagens e outros detalhes importantes.
Então, o que é OSGi?
A criação e distribuição de módulos e componentes é possibilitada pela estrutura Java conhecida como OSGi (Open Service Gateway Initiative).
Ele enfatiza o encapsulamento de funções e o acoplamento fraco, que oferece várias vantagens aos desenvolvedores, incluindo funcionalidade modular que é facilmente transferível entre códigos-fonte e testes que não precisam de dependências intermináveis.
Como funciona o OSGi?
Um sistema de componentes dinâmicos para Java é definido por um conjunto de especificações chamado OSGi. Essas especificações permitem uma abordagem de desenvolvimento em que um aplicativo é construído a partir de várias partes e, em seguida, empacotado em pacotes.
Serviços locais e baseados em rede são usados por esses componentes para se comunicar. Tornar o código central do programa o mais compacto possível é o objetivo. É possível um alto acoplamento entre este código e vários componentes.
Os elementos de construção reutilizáveis do aplicativo são chamados de componentes. Pense em recursos como um carrinho de compras para seu site de comércio eletrônico ou um aplicativo de folha de pagamento para seu sistema de gerenciamento de equipe.
Os componentes podem usar OSGi para ocultar suas implementações de outros componentes e fornecer apenas os dados necessários a eles por meio de serviços.
Isso evita que os componentes alterem involuntariamente dados aos quais não deveriam ter acesso e gerencia as dependências.
Todas as conexões entre componentes em uma aplicação OSGi são feitas por meio de serviços em um mundo ideal. Um pacote Java contém a API especificada para serviços.
A colaboração entre prestadores de serviços e clientes requer o uso de classes e/ou interfaces, que compõem a API.
Todos os componentes OSGi são empacotados em pacotes configuráveis, cada um dos quais inclui os recursos necessários para funcionar. Os pacotes são bastante claros sobre o que eles precisam do ambiente e do que são capazes.
Benefícios
- Os aplicativos OSGi têm acesso a repositórios de pacotes configuráveis externos.
- A estrutura permite o design orientado a serviços no nível do módulo.
- Permite gerenciar as versões e dependências dos pacotes de aplicativos, além de padronizar e facilitar a integração de bibliotecas de terceiros.
- Os aplicativos são mais adaptáveis às demandas em constante mudança, mais portáteis e mais rápidos para reengenharia.
- A aplicação web pode ser implementado como um grupo de pacotes OSGi versionados com uma vida útil dinâmica graças à integração da estrutura com o modelo de programação Java EE.
- Em vez de ser instalado como uma biblioteca de terceiros como parte do aplicativo, a estrutura fornece o assembly declarativo e o teste de unidade simplificado do Spring Framework em um formulário padronizado que é fornecido como parte do tempo de execução do servidor de aplicativos.
- Para aplicativos corporativos compostos de vários pacotes de versão com ciclos de vida dinâmicos, a estrutura oferece isolamento.
- Ele contém um repositório de pacote integrado que pode armazenar pacotes compartilhados comuns e com versão usados por vários aplicativos, impedindo que cada aplicativo implante uma cópia separada de cada biblioteca compartilhada.
Introdução ao OSGi Felix spring
Obtendo os recursos
Ao baixar a versão mais recente do Apache Karaf de este sítio, podemos começar nossa aventura OSGi.
Baseado no Apache Felix, a implementação do Apache da especificação OSGi, o Apache Karaf fornece uma plataforma para aplicativos baseados em OSGi.
Karaf fornece vários recursos úteis em cima do Felix que nos ajudarão a nos familiarizar com o OSGi, como uma interface de linha de comando que nos permitirá comunicar com a plataforma.
Ponto de entrada para pacotes
Um aplicativo deve ser empacotado como um pacote configurável OSGi antes de poder ser executado em um ambiente OSGi. Além disso, o ponto de entrada do aplicativo deve ser especificado; não é a função public static void main(String[] args) padrão.
Então vamos começar criando um “Olá Mundo” aplicativo baseado em OSGi.
Começamos estabelecendo uma dependência básica da API OSGi:
O runtime OSGi terá acesso à dependência, portanto, o pacote configurável não precisa contê-la. Portanto, ele é marcado como fornecido.
Agora vamos criar a classe HelloWorld direta:
As classes que atuam como pontos de entrada para pacotes configuráveis devem implementar a interface BundleActivator fornecida por OSGi.
Quando o pacote configurável que contém essa classe é ativado, a plataforma OSGi chama a função start(). Por outro lado, pouco antes do bundle ser interrompido, a função stop() é chamada.
Não esqueçamos que cada pacote só pode ter um BundleActivator. Ambas as formas podem se comunicar com o tempo de execução OSGi usando o objeto BundleContext fornecido.
Criando um pacote
Torne o pom.xml um pacote configurável OSGi verdadeiro fazendo as alterações necessárias.
Devemos primeiro expressar claramente que nosso objetivo é produzir um pacote.
Em seguida, usamos o maven-bundle-plugin para empacotar a classe HelloWorld como um pacote OSGi, cortesia da comunidade Apache Felix:
Os valores dos cabeçalhos OSGi que desejamos incluir no arquivo MANIFEST do pacote são especificados na seção de instruções.
Bundle-Activator é, de fato, o nome devidamente qualificado da solução BundleActivator que será empregada para iniciar e parar o pacote. É compatível com a classe recém-criada.
Embora não seja um cabeçalho OSGi, o cabeçalho Private-Package instrui o plug-in a adicionar o pacote ao pacote, mas não o torna acessível a outros plug-ins. O comando mvn install deve ser usado para criar o pacote.
Instalando e executando o pacote
Vamos começar Karaf executando este comando:
onde “KARAF HOME” refere-se à pasta onde o Karaf foi configurado. Podemos usar o seguinte comando para instalar o pacote quando o prompt do console Karaf aparecer:
Usando o repositório Maven local é como Karaf é instruído a carregar o pacote.
Retornando o ID numérico do pacote, Karaf o escreve. Esse ID pode ser diferente dependendo de quantos bundles foram instalados anteriormente. O pacote foi instalado com sucesso e o comando para iniciá-lo é o seguinte:
No momento em que você lança o pacote, “Hello World by Jay” é exibido. Agora podemos parar e remover o pacote usando:
O console exibe “Goodbye World by Jay”.
Conclusão
Os desenvolvedores podem adicionar facilmente novas funcionalidades a um aplicativo da Web existente, mantendo-o seguro e isolado de outros componentes do programa principal usando OSGi.
Aprendemos sobre o OSGi neste post, incluindo como ele funciona, suas vantagens e um programa simples. Não é difícil incorporar OSGi em seu próprio aplicativo.
Feliz codificação!
Deixe um comentário