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
- Componentes
- Classes Java
- Entidades Hibernate
- RESTful Web Services (JAX-RS)
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.
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 Lumis Portal 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.
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.
Class loaders de módulos
O portal cria um class loader distinto para cada módulo, de forma que um não está na hierarquia de class loaders do outro. Por esse motivo, recomenda-se uma arquitetura adequada para que os módulos possam ser construídos e funcionem adequadamene.