Modulos

Top  Previous  Next

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)

 

Observações

 

Um recurso (de qualquer tipo) só pode existir em um único módulo. A situação de existir um mesmo recurso em mais de um módulo é tratada como um erro.
Um recurso (de qualquer tipo) não pode estar presente no portal fora de um módulo e estar presente em um módulo. A situação de existir um mesmo recurso em um módulo e fora dele é tratada como um erro.

 

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 loader do 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.

Observações

 

Para que entidades hibernate sejam localizadas no módulo elas devem conter uma das seguintes anotações: org.hibernate.annotations.Entity ou javax.persistence.Entity.

 

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.

 

import java.io.IOException;

 

import javax.ws.rs.GET;

import javax.ws.rs.Path;

import javax.ws.rs.Produces;

import javax.ws.rs.core.MediaType;

import javax.xml.bind.annotation.XmlAttribute;

import javax.xml.bind.annotation.XmlElement;

import javax.xml.bind.annotation.XmlRootElement;

 

@Path("hello")

public class MyRest

{

 @XmlRootElement

 public static class Bean {

         @XmlElement

         private String name = "my_name";

         @XmlAttribute

         private String anAttribute = "attributeValue";

         @XmlElement

         private String anotherElement = "elementValue";

 }

 

 @Path("text") @GET @Produces({MediaType.TEXT_PLAIN})

 public String getText() throws IOException {

         return "hello";

 }

 

 @Path("bean") @GET @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})

 public Bean getBean() throws IOException {

         return new Bean();

 }

}

 

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.

 

 


Lumis Portal 8.2.2.160411
Copyright © 2006â??2016 Lumis EIP Tecnologia da Informação LTDA. Todos os direitos reservados.