Open the menu

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.