Skip to content

Bootstrap Toolbox

O MiddleHeaven é uma plataforma para a construção de aplicações em Java de uma forma orientada a objetos e não a tecnologias. Para que o MiddleHeaven possa correr dentro de um servidor web , um servidor de aplicações, no desktop via JWS ou simplesmente no seu desktop como aplicação standalone é necessário que exista uma casca isoladora entre o miolo do MiddleHeaven que as suas aplicações usaram e o ambiente onde o MiddleHeaven está sendo executado. Construir esta casta é o objectivo do Bootstrap Toolbox.

A plataforma do MiddleHeaven é fortemente baseada em serviços e em injeção de dependência. Os serviços podem ser fornecidos pelo ambiente onde o MiddleHeaven roda, pelo MiddleHeaven ele mesmo, ou por modulos da aplicação que roda dentro do MiddleHeaven.

O processo de bootstraping (inicialização) é o processo pelo qual o MiddleHeavené posto em funcionamento, o motor de injeção é ligado e todos os serviços e modulos da aplicação são inicializados.

Arquitetura

A arquitetura do MiddleHeaven é baseada em um Container que é inicializado pelo ambiente de execução (ExecutionEnvironmentBootstrap).

MiddleHeaven Diagrama de Bootstrap
lustração 1: Diagrama de bootstraping

Dependendo do ambiente em que o MiddleHeaven está sendo executado, um ExecutionEnvironmentBootstrap diferente é usado para o iniciar. A instancia de ExecutionEnvironmentBootstrap especifica para esse ambiente sabe então quais serviços o ambiente pode oferecer e os registra no motor de injeção para uso futuro pelo resto do sistema.

Feito isso, o ExecutionEnvironmentBootstrap descobre qual o container que pode ser usado. Diferentes containers são possíveis para cada ambiente. Por exemplo, para o WebContainerBootstrap que utiliza os ganchos da Servlet API para inicializar o MiddleHeaven é possível utilizar o CatalinaContainer quando no Tomcat, ou o JBossContainer quando no JBoss, que dando acesso a um servidor de aplicação completo fornece muito mais serviços. O contêiner tem então a oportunidade de registrar os seus serviços.

BootstrapService

O primeiro serviço que é carregado e pertence ao coração do MiddleHeaven é o WiringService que contém o motor de injeção e o pool de objetos. O segundo serviço a ser carregado é o BootstrapService. Este serviço permite que outros serviços e classes se registrem como observadores ( padrão Observer) do ciclo de inicialização. Isso é importante, por exemplo, para o serviço de clientes de interface quando em modo desktop para poder apresentar a interface swing.

O BootstrapService também permite acesso ao próprio objecto ExecutionEnvironmentBootstrap. Isto é principalmente útil para ter acesso ao objeto BootstrapContainer.

BootstrapContainer

O objecto BootstrapContainer inicializa serviços presente no contêiner. Estes serviços mapeiam , até onde possível, os serviços presentes no ambiente.

O BootstrapContainer define ainda um conjunto de localizações em sistema de arquivos virtual onde é possível o MiddleHeaven e em particular as aplicações lerem e/ou escreverem logs, configurações, dados, etc…

Ativação

O processo se bootstrap é muito simples. O real processo que coloca tudo a funcionar é o de ativação. O processo de ativação é guiado pelo WiringService. Contudo é preciso reunir um conjunto inicial de ativadores. Este processo de recolher os ativadores é o segundo passo do ExecutionEnvironmentBootstrap. Os ativadores são recolhidos primeiro do próprio ExecutionEnvironmentBootstrap. Cada um pode adicionar os ativadores que desejar. Alguns ativadores são adicionados em todos os ambiente; nomeadamente o LoggingActivator , o FileRepositoryActivator e o AtlasActivator. O WebContainerBootstrap ainda ativa,por exemplo, o HttpService. Depois é a vez do BootstrapContainer adicionar os seus ativadores à lista. Depois o ExecutionEnvironmentBootstrap ainda adiciona ativadores como o LocalizationServiceActivator e o AlarmClockScheduleWorkExecutionServiceActivator. Após isso o WiringService inicia todos os ativadores tendo em consideração as suas dependencias.

A adição de ativadores é feita na sequencia e alguns ativadores são apenas adicionados no fim porque se o contêiner tiver adicionado o mesmo ativador ou algum que seja equivalente, os últimos ativadores são serão adicionados. O objetivo é fornecer o máximo de serviços, mas aproveitar ao máximo as implementações nativas ao contêiner e ao ambiente.

Por detrás dos panos

Também aqui não ha surpresa. Todo o processo é definido na plataforma Java padrão utilizando objetos do MiddleHeaven. O conceito de bootstrap é comum e várias plataformas o usam (JEE, JME, OSGI). O mecanismo do MiddleHeaven foi desenhado para permitir que o MiddleHeaven execute no máximo de ambientes possível fornecendo outra perspectiva do slogan Write Once, Run Everywhere da plataforma Java.

O plano inicial é prover bootstraping para os contêineres web e servidores de aplicações principais que sejam livres. Depois para o ambiente desktop desconetado ( corre apenas na máquina) seguido do connectado (acessa um servidor mas correndo localmente) e finalmente do ambiente desktop distribuído através do Java Wed Start ( tudo vem de um servidor). Com o advento do JavaFX as interfaces Desktop tendem a se popularizar mesmo no ambiente corporativo.

Deixe um Comentário

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s

%d bloggers like this: