Java Magazine Edição 58
Esse artigo faz parte da revista Java Magazine Edição 58. Clique aqui para ler todos os artigos desta edição

Criando portlets em ambiente Open Source

Conheça a especificação e aprenda como criar, empacotar e instalar portlets no ambiente referência da especificação

Gustavo Concon e Alex Barbosa Coqueiro

Quando falamos em portal, logo vêm à cabeça grandes sites com inúmeros conteúdos de diferentes assuntos, como por exemplo, terra.com.br ou uol.com.br. Imagine o quão complexo seria o desenvolvimento e manutenção desses portais se não houvesse uma arquitetura componentizada e baseada em serviços. A especificação Java respondeu a essa necessidade com APIs para o desenvolvimento de portais, e a partir disso os fornecedores de software trabalharam no desenvolvimento de servidores que suportam toda a infra-estrutura necessária.

O principal objetivo de um portal é agregar conteúdos de diferentes fontes em uma única página da web, permitindo que o usuário tenha acesso completo a tudo que o site tem a oferecer.

Para agregar esses conteúdos, a tecnologia permite o particionamento da página em elementos conhecidos como Portlets. Um Portlet é um componente plugável que pode ser colocado em uma ou várias páginas de um portal. Neste artigo, vamos entender o que são os portlets, como e quando usá-los.

Alguns artigos já abordaram portlets em edições anteriores da revista, por isso vamos apenas rever alguns conceitos e partir para implementação e deploy de portlets no Pluto Container. Para nosso exemplo, usaremos o Eclipse e o framework Apache Pluto, um portlet container que implementa a especificação JSR 168 (que também examinaremos). Utilizaremos também o Maven 2, um utilitário utilizado para criação, assembly e deploy de projetos.

No atual estágio de maturidade dessa tecnologia, há ferramentas comerciais que desenvolvem portlets em um formato totalmente visual, como o WebSphere Portlet Factory, ganhando com isso produtividade, mas este tipo de estudo está fora do escopo deste artigo.

O que são portlets, afinal?

Primeiro devemos ter o conceito de três componentes principais da arquitetura:

·         Os portais, que são aplicações que agregam aplicações portlets em uma única página de apresentação;

·         O portlet container, que é um mediador entre as aplicações portlets e o portal, provendo todo o ambiente para a execução dos portlets e controlando seu ciclo de vida;

·         E os portlets, que são aplicações de interface gráfica simples, geralmente pequenas, disponibilizadas em páginas de Portais. Ou seja, um portlet é uma entre várias outras aplicações que fornecem ao usuário um conteúdo, que em conjunto a outros portlets formam uma página de portal, como a Figura 1.

 

imagem

Figura 1. Portlets em uma página de portal

 

Para compreender melhor a relação entre esses três componentes, vamos ver como é o fluxo de requisição de uma página de portal (Figura 2).

Quando é feita a requisição de uma página, o servidor de portal a encaminha para o portlet container, que tem a lista de portlets que formam esta página. Em seguida, cada portlet processa a requisição e gera a resposta na forma de markup[1], devolvendo-a ao container que encaminha o conteúdo gerado ao portal para exibição ao cliente, como ilustrado na Figura 2.

 

imagem

Figura 2. Fluxo da requisição de uma página de portal

É importante frisar que os portlets não são como os servlets, apesar de terem algumas semelhanças, como pode ser visto na Tabela 1.

 

Semelhanças

Ambos são baseados na tecnologia Java.

Seu ciclo de vida é gerenciado por um container específico.

Geram conteúdos dinâmicos.

Interagem com o cliente utilizando o paradigma Request/Response.

Diferenças

Portlets geram apenas fragmentos de markup, pois o Portal agrupa os fragmentos dos portlets em uma página completa.

Portlets não são diretamente acionados via URL.

Os clientes interagem com os portlets através do Portal.

Portlets possuem alguns modos e estados de janela (veremos adiante).

Portlets podem existir várias vezes em uma página de Portal.

Tabela 1. Semelhanças e diferenças entre portlets e servlets

Quanto à padronização

Em 2003, membros do Java Community Process resolveram estabelecer um padrão para o desenvolvimento de portlets, e criaram uma especificação, a JSR 168. Esta estabelecia uma série de conceitos e padronizações tanto no próprio desenvolvimento dos portlets, quanto na arquitetura envolvida (segurança, caching, interface gráfica e etc).

O tempo passou e a tecnologia amadureceu muito com os inúmeros produtos no mercado, levando então à necessidade de uma atualização: a JSR 286 (Portlet 2.0). Na data de escrita desse artigo, esta JSR já teve seu release final aprovado; quando você estiver lendo este artigo a especificação já deve estar disponível, bem como sua implementação pelo Pluto 2.0. A proposta inclui muitas correções da primeira versão e outros componentes como filtros, melhoramentos em caching, gerenciamento, implementação de portlets remotos, etc.

O ciclo de vida dos Portlets

A especificação define um ciclo de vida a ser gerenciado pelo portlet container, contendo as seguintes fases:

1.      Instanciação: É onde o portlet container instancia a classe que representa o portlet, definida pela implementação da interface javax.portlet.Portlet;

2.      Inicialização: Onde o container inicializará os recursos que podem ser utilizados pelo portlet. Geralmente são recursos como conexões ou abertura de arquivos, portanto é uma operação custosa, efetuada apenas uma vez durante todo seu ciclo de vida. Após essa fase, o portlet está pronto para atender os ...

Quer ler esse conteúdo completo? Tenha acesso completo