Classloader do portal
O classloader do portal organiza e disponibiliza os recursos dos módulos instalados no portal.
Esse classloader é disponibilizado pelo método getClassLoader()
, da interface lumis.portal.deployment.IDeploymentManager
.
Essa interface é acessível pelo método lumis.portal.manager.ManagerFactory.getDeploymentManager()
.
A forma que um módulo adotará na organização do classloader, depende de seu escopo.
Escopos de módulos
O escopo de um módulo é definido em seu arquivo de definição.
Esse escopo pode ser:
global
-
Quando o escopo do módulo é
global
, ele é dito um módulo global. Os módulos globais formam um único classloader, chamado classloader global. As classes do classloader global, isto é, todas as classes de todos os módulos globais, têm visibilidade entre si e têm visibilidade das classes providas pelo classloader da aplicação web do portal. isolated
(padrão, caso não se defina)-
Quando o escopo do módulo é
isolated
, ele é dito um módulo isolado. Classes de módulos isolados distintos não têm visibilidade entre si. Uma classe de um módulo isolado têm visibilidade das outras classes desse mesmo módulo, das classes do classloader global (todas as classes de todos os módulos globais) e das classes providas pelo classloader da aplicação web do portal.
O classloader do portal tem a seguinte estrutura:
Cada módulo pode incluir bibliotecas .jar
, caso necessite, em sua pasta META-INF/lib
. Essas bibliotecas devem ser arquivos normais e com nome terminado em .jar
(minúsculo).
Abaixo, encontra-se um exemplo de visibilidade entre classes:
Legenda:
- Setas roxas ⇢
- Visibilidade da classe
com.empresa.projeto.Classe1
- Setas cinzas ⇢
- Visibilidade da classe
com.empresa.projeto.Classe2
- Setas verdes ⇢
- Visibilidade da classe
com.empresa.projeto.Classe3
- Setas azuis ⇢
- Visibilidade da classe
com.empresa.projeto.Classe4
- Setas laranjas ⇢
- Visibilidade da classe
com.empresa.projeto.Classe5