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)
    • Bibliotecas internas

    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.

    Bibliotecas internas

    Cada módulo do Lumis Portal 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.

    Exemplo de biblioteca interna
    Exemplo de biblioteca interna

    Classloaders de módulos

    Para entender como os módulos constituem classloaders, veja a página Classloader do portal.