Modulos
Módulos são partes de uma aplicação instaláveis, ou até mesmo de uma aplicação completa, que podem conter:
- Serviços
- Temas
- Contextos de negócio
- Eventos de monitoramento
- Componentes
- Classes Java
- Entidades Hibernate
- RESTful Web Services (JAX-RS)
- Bibliotecas internas
- Workflow
Serviços
Um módulo pode possuir serviços que serão disponibilizados pelo portal enquanto o módulo estiver disponível. Os serviços podem estar localizados em qualquer local do módulo.
Temas
Um módulo pode possuir temas que serão disponibilizados pelo portal enquanto o módulo estiver disponível. Os temas podem estar localizados em qualquer local do módulo.
Contextos de negócio
Um módulo pode possuir contextos de negócio que serão disponibilizados pelo portal enquanto o módulo estiver disponível. Os contextos de negócio podem estar localizados em qualquer local do módulo.
Eventos de monitoramento
Um módulo pode possuir eventos de monitoramento que serão utilizados pelo portal enquanto o módulo estiver disponível. Os eventos de monitoramento podem estar localizados em qualquer local do módulo com exceção da raiz.
Classes Java
Quando uma classe Java é disponibilizada ela fica disponível através do class loaderdo portal. Não é recomendado uma classe Java disponibilizada em um módulo utilizar-se de uma classe Java disponibilizada em outro módulo. Caso o faça, a classe que referencia a outra só poderia fazê-lo utilizando reflection, o que tornaria impraticável essa situação.
Entidades Hibernate
As entidades Hibernate presentes no módulo sendo instalado serão, por padrão, automaticamente registradas e estarão prontas para uso na EntityManagerFactory
padrão, uma vez que o módulo tenha sido instalado. Caso haja a necessidade de alterar em qual EntityManagerFactory
a entidade será disponibilizada ou caso a entidade não possa ser disponibilizada automaticamente, basta anotar a classe com a anotação lumis.portal.dao.jpa.PortalEntity
.
RESTful Web Services (JAX-RS)
Classes Java presentes no módulo contendo anotações @Path
ou @Provider
do JAX-RS serão processadas e incluídas no motor de execução REST da aplicação do portal. Abaixo há um exemplo de uma classe que disponibiliza operações RESTful, tal que quando acessado "<URL base do portal>/hello/text" retorna um texto, e quando acessado "<URL base do portal>/hello/bean" retorna um objeto convertido para XML ou JSON conforme a preferência indicada pelo cabeçalho da requisição. Para maiores informações sobre como implementar um RESTful Web Service utilizando JAX-RS, consulte a documentação de JAX-RS.
Afim de facilitar o desenvolvimento, nas chamadas REST, que são normalmente dinâmicas, o LumisXP por padrão inclui o cabeçalho de resposta "Cache-Control
" com valor private, no-cache, no-store, no-transform
. Isto pode ser alterado usando a anotação lumis.portal.rest.util.CacheControl
ou explicitando outro valor para esse cabeçalho na resposta.
Para possíveis soluções de problemas, veja essa página.
Disponibilidade dos recursos de um módulo
Os recursos de um módulo são mantidos enquanto o mesmo existe no portal. O portal efetuará as alterações dos recursos adequadamente quando há alterações (incluções, atualizações e excluções) de módulos.
Definição do módulo
O módulo deve conter um arquivo de definição que contém informações gerais sobre o módulo, como por exemplo seu identificador. Veja mais sobre o identificador em Definição de Módulo.
Bibliotecas internas
Cada módulo do LumisXP pode conter, opcionalmente, arquivos .jar
de bibliotecas necessárias para o correto funcionamento do mesmo.
Esses arquivos devem estar localizados dentro do módulo, na pasta META-INF/lib
.
Por exemplo, caso se deseje utilizar a biblioteca Apache Commons Math em um
módulo, basta adicionar seu arquivo .jar
na pasta META-INF/lib
do módulo, como na figura a seguir.
Workflow
Um módulo pode possuir workflows que serão disponibilizados pelo portal enquanto o módulo estiver disponível. Os workflows podem estar localizados em qualquer local do módulo.
Classloaders de módulos
Para entender como os módulos constituem classloaders, veja a página Classloader do portal.
Callbacks de ciclo de vida de módulos
O LumisXP possui callbacks de ciclo de vida de módulos. Para maiores informações, veja a página Callbacks de ciclo de vida de módulos.